【问题标题】:ID generation method stuck in a loopID生成方法陷入循环
【发布时间】: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


【解决方案1】:

inUse 表示“当前的potentialID正在使用中”;因此,需要为每个新的 potentialID 重置它。

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2021-09-24
    • 2019-07-03
    • 2014-09-07
    • 2019-11-12
    • 2017-03-05
    相关资源
    最近更新 更多