for-loop似乎只运行一次,直到达到某个值

时间:2015-11-17 21:39:45

标签: java loops for-loop nested nested-loops

我有一些代码可以显示正确的信息,但循环只重复一次,我需要重复,直到达到最大值。

    double x, v, max = .092 * Volt;
    int t = 0, resistance = initialResistance, stop = 0;

    System.out.print("\t");
    for (int column = initialResistance -= 100; column < finalResistance;       column += 100) {
        System.out.print(resistance + " \t");
        if (resistance < finalResistance) {
            resistance += 100;

        }

    }
    System.out.println("");
    for (int i = 0; i <= t; i += 10) {
        System.out.print("t:");
for (int j = initialResistance -= 100; j < resistance; j += 100) {
            if (resistance < finalResistance) {
                resistance += 100;

            }

            while (stop != 1)
            {
              resistance = initialResistance;
              for (int r = initialResistance -= 100; r <= resistance; r += 100) {
                if (resistance >= finalResistance)
                    {
                    resistance = finalResistance;
                    }
                    x = -(t / (resistance * capacitorValue));
                    v = Volt * (1 - Math.pow(BASE, x));
                    if (v <= max)

                 System.out.print("\t"+ String.format("%.2f", v));
                else
                 System.out.print("");

                if (r >= resistance && v > max)
                {
                 stop = 1;
                }
                 resistance += 100;
                }
                t += 10;
                System.out.println("");

            }
        }
    }

500 600 700
t:0.00 0.00 0.00 0.00 0.00 0.00 0.00
    0.92 0.77 0.67 0.67 0.67

T:T:T:

是当前显示,当500和700是初始和最终阻力而.25是capacticorValue

所以它显示正常,但需要重复更多,我需要摆脱额外的0.00和.67并找出为什么它不在第二行显示“t:”

3 个答案:

答案 0 :(得分:0)

我认为这是因为initialResitance - 100resistance小100,如果j(或r)每次增加100, s 100 / 100 = 1

答案 1 :(得分:0)

j循环的第一次迭代期间,内部while(stop != 1)循环被stop = 1打破。当第二次j迭代开始时,此标志变量保持设置。永远不会再次输入while循环,因为stop仍为1。

注意,在while循环后重置停止为'0'没有帮助。程序将无限期运行,因为t在内循环中递增,因此for(int i循环永远不会停止。

答案 2 :(得分:0)

  • 尝试简化您的代码。
  • 像你这样的结构(在for循环中for循环中的for循环中的for循环)非常容易出错。
  • 最小化变量,特别是循环终止变量。 (您可以在6个不同的地方更改'抵抗'的值。)
  • 不要将副作用引入循环定义。 (如果你想减少'initialResistance'明确地做。)