我必须编写一段代码,提示用户输入一个数字,它应该从数字开始倒数到0。我被告知:需要三个函数: main()、doCountDown()和waitASec()。可选的是,第四个函数将执行用户交互。到目前为止,这就是我所拥有的。没有错误,代码运行。但是,倒计时不会停止在0,它不断倒计时到负数。我不确定从这里到哪里去。
import java.util.Date;
import java.util.Scanner;
public class Code {
public static void main(String[] args) {
System.out.println("Count down how many seconds? ");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
doCountDown(num);
}
public static void doCountDown(int num){
for(int i=num;i<=num;i--){
System.out.println(i);
waitASec();
}
}
private static void waitASec() {
long t = new Date().getTime();
long t1=t+1000;
for(;t<t1;) {
t = new Date().getTime();
}
}
}
发布于 2018-09-23 05:22:16
在for-loop
中,您的doCountDown
方法应该检查条件递减到0。即i>=0
,
public static void doCountDown(int num){
for(int i=num;i>=0;i--){
System.out.println(i);
waitASec();
}
}
发布于 2018-09-23 05:23:16
看看for循环的中间部分,i<=num。这是决定循环何时终止的部分。也就是说,只要i小于或等于num,循环就会继续。I开始等于num,在每个循环结束时,将i减去1 (i--)。所以i总是小于num,因此你的循环将永远持续下去。
请尝试使用for(int i=num;i >= 0;i--)。
发布于 2018-09-23 05:23:44
当然,倒计时永远不会结束。因为i <= num
总是正确的。用这个改变你的逻辑;
public static void doCountDown(int num){
for(int i=num;i>= 0;i--){
System.out.println(i);
waitASec();
}
}
https://stackoverflow.com/questions/52460954
复制相似问题