Java getCountry方法错误

Java getCountry方法错误,java,arrays,Java,Arrays,有人能解释一下为什么代码不起作用吗?问题在于部分国家[numCountries]=newCountry 我不知道为什么它总是说类型不匹配不能将Country[]转换为Country,但我认为我的countries[numCountries]是Country[]类型,因为我已经在代码的第二行将其称为该类型 public class World{ private Country[] countries; private int numCountries=0; public boolean add

有人能解释一下为什么代码不起作用吗?问题在于部分国家
[numCountries]=newCountry

我不知道为什么它总是说类型不匹配不能将
Country[]
转换为Country,但我认为我的
countries[numCountries]
Country[]
类型,因为我已经在代码的第二行将其称为该类型

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;

       }


}

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

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


如果其中任何一条没有意义,请询问——只需在回答下面写一条评论。

国家后的方括号表示您要添加国家方法是添加一系列国家,但您很可能一次只想添加一个国家

因此,将其更改为:

public boolean addCountry(Country newCountry){
    ....
}

+1告诉我们错误消息以及您认为问题出在哪里。:)因为您将newCountry声明为数组,而不是单个国家。Dave所说的是,如果(newCountry!=null){
我的观点是(!(newCountry==null))比(newCountry!=null)更难读取。这比颠倒逻辑并立即返回if(newCountry==null)更难读取。这是一个完全不同的问题,现在的答案是荒谬的。问题是你从来没有实例化过国家数组,只是对它的引用。感谢这是有意义的,但现在它编译了,但我得到了一个空指针错误,这很奇怪,因为我已经创建了新世界、新国家和新城市,我还编辑了我的顶部的代码和问题^^@user1343502:您可能想就此提出一个新问题。但是,如果您这样做或不这样做,您将需要指出哪一行抛出了NPE(NullPointerException),因为这将是查看哪个变量为null以及为什么为null的关键。@user1343502:请参阅Dave的最新评论,其中告诉您为什么要获得NPE。