gpt4 book ai didi

java - 比较 ArrayList 中的元素值

转载 作者:行者123 更新时间:2023-12-02 01:34:48 26 4
gpt4 key购买 nike

我试图在 ArrayList“minions”中找到具有最高“evilLevel”(在另一个类中定义)的元素。

public Minion(String name, int evilLevel, boolean onMission) - from class Minion


private Set<Minion> minions;
int maxEvilLevel = 0;
Minion theMostEvilMinion;

public MinionRegister(){


minions = new HashSet<Minion>();
}

public Minion getMostEvilMinion(){
if(minions.isEmpty()){
return null;
}


for(Minion m : minions){
if(m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
Minion theMostEvilMinion = m;
}
}
return theMostEvilMinion;
}

不幸的是,该方法返回“null”

最佳答案

这里:

for(Minion m : minions){
if(m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
Minion theMostEvilMinion = m;
}
}
return theMostEvilMinion;

for 循环内,您声明并设置了一个局部变量 theMostEvilMinion,该变量随后被遗忘,因为它是在该 block 内声明的。

然后在循环之后,您返回实例变量 theMostEvilMinion,这是一个在类顶部声明的不同变量。

您需要声明并设置一个本地 theMostEvilMinion 变量,然后返回它。

Minion theMostEvilMinion = null;
int maxEvilLevel = 0;
for (Minion m : minions) {
if (m.getEvilLevel() > maxEvilLevel) {
maxEvilLevel = m.getEvilLevel();
theMostEvilMinion = m;
}
}
return theMostEvilMinion;

然后您还可以删除 theMostEvilMinionmaxEvilLevel 实例变量。

关于java - 比较 ArrayList 中的元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com