【发布时间】:2014-08-11 08:56:35
【问题描述】:
public void calculate(int input) {
inputField.setText("" + input);
while (input >= 1) {
if (input % 2 == 0) {
input = input / 2;
} else {
input = (input * 3) + 1;
}
output.append("" + input);
}
}
输出变量是 JTextArea,inputField 是用户输入整数的 JTextField。
我在这里调用方法并初始化输入变量:
@Override
public void actionPerformed(ActionEvent e) {
input = Integer.parseInt(inputField.getText());
calculate(input);
}
}
每次输入的值是偶数时,它除以2,所以它最终应该达到1,对吗?那么为什么这个while循环会导致无限循环呢?
【问题讨论】:
-
提示:
input == 1时会发生什么? -
1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2
-
"每次input的值为偶数时,除以2,所以最终应该是1,对吧?那为什么这个while循环会导致死循环呢?" - 也许您可以问自己,您的程序与您的假设之间的区别在于程序在达到“1”时应该退出。
-
谢谢大家。我在这里犯的最大错误确实是认为当输入达到 1 时循环会停止执行。
标签: java while-loop logic infinite-loop