我想编写一个跟踪总线迟到次数的程序。
因此,要求用户输入一个int值,该值指示迟到了几分钟。
一旦输入负整数,程序应停止。
我遇到的麻烦是仅对0或更大的输入重复执行该程序。
无论输入什么int,程序都会重复执行。
我做了如下的事情:
import java.util.Scanner;
public class LateBus {
public static void main(String[] args) {
int enter_minutes = enterMinutes();
loop(enter_minutes);
}
public static int enterMinutes() {
Scanner enter = new Scanner(System.in);
System.out.print("How many minutes late was the bus? ");
int late = enter.nextInt();
return late;
}
public static void loop(int a) {
while (a >= 0) {
enterMinutes();
}
}
}
答案 0 :(得分:2)
让我们看看这个功能:
public static void loop(int a) {
while (a >= 0) {
enterMinutes();
}
}
a
的值永远不变。根据{{1}}的初始值,a >= 0
将始终为真或从不为真。由于a
在此函数内部使用,因此您不应将其作为参数传递。而且您应该确定要更改它:
a
现在您可以像这样调用函数:
public static void loop() {
int a = enterMinutes();
while (a >= 0) {
a = enterMinutes();
}
}
每个人在编写代码时都会犯逻辑错误。要找到它们,您需要学习如何调试。我建议您阅读https://ericlippert.com/2014/03/05/how-to-debug-small-programs/,以获取有关如何调试代码的一些提示,以便您可以自行发现此类问题。
答案 1 :(得分:0)
当a
为负数时,while循环将停止,但是您请勿更改其值。
这样做
while (a >= 0) {
a = enterMinutes();
}
现在值更改为用户输入的内容。