我有一个有名称的对象,String [] 还有一个另一个 String 数组,它只存储 main 中的对象的名称(第一个参数)。import java.util.*;class Dice{ public String [] side; public String name; public Dice (String n, String ... a){ name = n; side = a; } //Setter and Getter name public String getName(){ return name; } public void setName(String n){ name = n; }}对象参数在主类中设置。Dice easy = new Dice("Green:","Brain","Brain","Brain","Foot Print","Foot Print","Shotgun");字符串数组只存储名称Easy:。我试图通过将两个数组传递给 main 中的方法来比较它们。//Removeing the 3 dice which were picked form the cup of the current playerpublic static Dice [] cup(Dice [] a , String [] b){ Dice [] currentCup = new Dice[a.length]; for (int i = 0; i < b.length; i++) { if (b[i] == a[i].getName()) { currentCup[i].setName(""); } } return currentCup;}如果对象的名称等于字符串数组中的名称,则对象名称应等于且为空 String(" ")。我收到错误Exception in thread "main" java.lang.NullPointerException我知道在这里使用 ArrayList 更好,因为我只需 .remove(i, elem) 即可。但我不知道如何将 ArrayList 传递到构造函数中。另外,这只是我自己使用数组的纯粹练习。结果应该是,如果 Dice [].getName() 等于 easy,则该 Dice 对象的名称应该是一个空字符串“”。
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
我知道在这里使用 ArrayList 更好,因为我只需 .remove(i, elem) 即可。但我不知道如何将 ArrayList 传递到构造函数中。
public Dice (String n, List<String> sideList){
name = n;
side = sideList.toArray(new String[sideList.size()]);
}
另外,您没有对下面的数组执行任何操作。
Dice [] currentCup = new Dice[a.length];
我强烈鼓励您自己试运行代码。看来您的代码没有做您真正要做的事情。:)
牧羊人nacy
TA贡献1862条经验 获得超7个赞
在cup
方法中,返回值currentCup
从未被分配,因此它只是 的“序列” null
。您需要单独初始化其成员(例如currentCup[i] = a[i]
,作为 中的第一个操作for
)。null
该代码尝试对 a 执行通常不可能的操作(取决于操作)。在这种情况下,代码不能getName
为null
:这会在运行时引发异常。
b
如果长度超过,代码也会崩溃a
。
希望我有所帮助。
慕村225694
TA贡献1880条经验 获得超4个赞
把它放在你的 if in 方法中:
if (b[i] == a[i].getName()) {
a[i].setName("");
currentCup[i] = a[i];
}
添加回答
举报
0/150
提交
取消