为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在将对象与另一个数组进行比较时更改对象的一个​​值吗?

我可以在将对象与另一个数组进行比较时更改对象的一个​​值吗?

米琪卡哇伊 2023-07-28 15:31:27
我有一个有名称的对象,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];

我强烈鼓励您自己试运行代码。看来您的代码没有做您真正要做的事情。:)


查看完整回答
反对 回复 2023-07-28
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

cup方法中,返回值currentCup从未被分配,因此它只是 的“序列” null。您需要单独初始化其成员(例如currentCup[i] = a[i],作为 中的第一个操作for)。null该代码尝试对 a 执行通常不可能的操作(取决于操作)。在这种情况下,代码不能getNamenull:这会在运行时引发异常。

b如果长度超过,代码也会崩溃a

希望我有所帮助。


查看完整回答
反对 回复 2023-07-28
?
慕村225694

TA贡献1880条经验 获得超4个赞

把它放在你的 if in 方法中:


if (b[i] == a[i].getName()) {

    a[i].setName("");

    currentCup[i] = a[i];

}


查看完整回答
反对 回复 2023-07-28
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信