【发布时间】:2020-05-02 16:21:06
【问题描述】:
我正在使用以下方法来生成 ID 号。它从数字 0 开始,并将其与数组中所有现有对象的 ID 号进行比较,如果它不等于任何对象,则它应该返回该 ID 号并跳出循环。如果它确实等于任何对象,它将 + 1 并将 1 与所有对象的 ID 号进行比较,直到找到一个不匹配/未使用的数字。
但是,当我运行程序时,for 循环会无限循环,尽管它是由一个布尔值控制的,当所有对象 ID 都已比较且不匹配时会触发该布尔值。代码如下:
public int GenerateProductID(){
Boolean NewIDFound = false;
Boolean inUse = false;
int potentialID;
for(potentialID=0;NewIDFound==false;potentialID++){
for(Product productToCompare: this.Products){
if (potentialID==productToCompare.getID()){
{inUse=true;}
}
}
if(inUse!=true){
NewIDFound=true;
return potentialID;
}
}
return potentialID;//Had to return something here although the function will never get here.
}
我花了一段时间试图弄清楚这一点,Java 是一项新的尝试,所以如果遗漏了一些明显的东西,请提前道歉。任何有关如何解决此问题的帮助将不胜感激。
【问题讨论】:
-
使用
break退出for循环,而不是使用你在条件中改变的变量。
标签: java loops for-loop arraylist