3

有人可以提供一些关于为什么代码不起作用的见解吗?问题出在部分国家[numCountries]=newCountry;

我不确定为什么它一直说类型不匹配无法转换Country[]为 Country,但我认为我countries[numCountries]的 isCountry[]类型,因为我已经在第二行代码中将它称为该类型?

public class World{

private Country[] countries;
private int numCountries=0;

public boolean addCountry(Country[] newCountry){
    if(!(newCountry==null)){
        countries[numCountries]=newCountry;     //the newcountry part doesnt work, red zigzag line underlining it here im not sure why
        numCountries++;
        return true;
    }
    else
        return false;

       }


}
4

2 回答 2

3

您的方法说您要添加Country,而不是添加 Country 数组,因此您的方法参数可能应该丢失数组括号[]。这样,该方法就更有意义了,因为它传入了您所说的应该传入的内容——单个 Country 对象。在尝试将另一个国家/地区添加到数组之前,您还需要检查您的方法是否没有超出国家/地区数组的大小。这可以通过一个简单的 if 语句来完成。

如果你想添加一个 Country 数组,那么你可能希望创建另一个方法,比如addCountries(Country[] newCountries). 但我不认为你真的想这样做,所以坚持使用更正的当前方法。

如果其中任何一个没有意义,请询问 - 只需在此答案下方写下评论即可。

于 2012-05-16T00:23:41.637 回答
3

Country 后面的方括号表示您的 addCountry 方法正在添加一系列国家/地区,但您很可能一次只想添加一个国家/地区。

因此,将其更改为:

public boolean addCountry(Country newCountry){
    ....
}
于 2012-05-16T00:30:56.247 回答