我想写一个程序来记录一辆公交车晚点了多少次。
因此,要求用户输入一个int值,表示迟到了多少分钟。
一旦输入了负的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();
}
}
}
发布于 2018-10-29 01:12:32
让我们看一下这个函数:
public static void loop(int a) {
while (a >= 0) {
enterMinutes();
}
}
a
的值永远不会改变。根据a
的初始值,a >= 0
将始终为真或永远不为真。由于此函数在内部使用了a
,因此不应将其作为参数传递。并且您应该确保更改它:
public static void loop() {
int a = enterMinutes();
while (a >= 0) {
a = enterMinutes();
}
}
现在,您可以像这样调用函数:
public static void main(String[] args) {
loop();
}
注意:
每个人在编写代码时都会犯逻辑错误。要找到它们,您需要学习如何调试。我建议您阅读https://ericlippert.com/2014/03/05/how-to-debug-small-programs/获取一些关于如何调试代码的技巧,这样您就可以自己发现这些类型的问题。
发布于 2018-10-29 01:09:01
当a
为负值时,while循环将停止,但您不能更改其值。
像这样做
while (a >= 0) {
a = enterMinutes();
}
现在,该值更改为用户输入的内容。
https://stackoverflow.com/questions/53034010
复制相似问题