【问题标题】:Why am I stuck in an extra long for-loop in java?为什么我在java中陷入了一个超长的for循环?
【发布时间】:2020-04-14 09:11:46
【问题描述】:

我知道我对此有点愚蠢,但我想我要休息几分钟,然后问这个问题。我正在尝试向输入框添加倒计时功能。问题在于,当我真正尝试增加一个在循环本身内部调用的变量时,它会执行输入量的平方次数。我确信它会来找我,但让别人的观点会有所帮助。

String propertyNumber = JOptionPane.showInputDialog("Enter Numer of Properties...");
int propNumber = Integer.parseInt(propertyNumber);
numOfProperties = new float[propNumber];

for(int i= 0; i < propNumber; i++) {
    for(int a = propNumber; a >= 0; a--) {
        String propertyVal = JOptionPane.showInputDialog("Enter each property value for the " + propNumber + " Properties you listed. You have " + a + " inputs left.");
        numOfProperties[i] = Float.parseFloat(propertyVal); //takes property value info and stores them inside the property number array
    }
}

【问题讨论】:

  • 终止对我来说很好。不知道为什么你有外循环。你调试过这段代码吗?
  • 您的循环不是无限的,您只需提示propNumber 属性propNumber² 次。为什么要嵌套循环? int a = propNumber - i; 和一个循环(这是我认为你想要的)。
  • 刚刚意识到我的问题是错误的。我的问题是 - 每当我输入,比如 3,属性。它将运行循环 9 次。我认为这是因为我在循环中计算了两次变量“propNumber”。

标签: java for-loop nested


【解决方案1】:

正如我在 cmets 中提到的,您不需要嵌套循环。我相信你想要一个循环,a 应该从属性数量和当前索引i 中计算出来。喜欢,

for (int i = 0; i < propNumber; i++) {
    int a = propNumber - i;
    String propertyVal = JOptionPane.showInputDialog("Enter each property value for the "
            + propNumber + " Properties you listed. You have " + a + " inputs left.");
    numOfProperties[i] = Float.parseFloat(propertyVal); 
}

【讨论】:

  • 非常感谢。我完全忽略了一个事实,即我应该在 for 循环中声明一个变量并利用初始化的变量来处理它。
【解决方案2】:

假设,propNumber = 3。由于您使用的是嵌套循环,因此它将按如下方式工作:

先以嵌套循环为例:

for(int a = propNumber; a >= 0; a--) {

}

给定propNumber为3,里面的代码会被执行3次。

以主循环为例:

for(int i= 0; i < propNumber; i++) {
    //another loop inside
}

由于主循环内的代码会被执行 3 次,所以它里面的循环也会被执行 3 次。 3*3 = 9。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2018-05-30
    • 2019-08-20
    • 1970-01-01
    • 2018-01-03
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多