Java Do While循环和hasNextInt()
我知道这听起来可能是一个非常愚蠢的问题,但我不明白我的错误在哪里 为什么在循环的第二次迭代中,它不打印“输入一个数字:”Java Do While循环和hasNextInt(),java,Java,我知道这听起来可能是一个非常愚蠢的问题,但我不明白我的错误在哪里 为什么在循环的第二次迭代中,它不打印“输入一个数字:” import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner console = new Scanner(System.in); int[] v = new int[10]; int index
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner console = new Scanner(System.in);
int[] v = new int[10];
int index = 0;
do {
System.out.print("Enter a number:\t");
v[index] = console.nextInt();
index++;
} while(console.hasNextInt());
for (int i = 0; i < index; i++){
System.out.print(v[i] + "\t");
}
System.out.println("\n" + index);
}
}
因为
hasnetint
会阻塞,直到控制台上出现int
,因此不会进入循环的下一次迭代。请考虑在达到阵列的足够大小时退出循环。差不多
do {
System.out.print("Enter a number:\t");
v[index] = console.nextInt();
index++;
} while(index<10); // if you want the user to enter 10 numbers.
do{
System.out.print(“输入一个数字:\t”);
v[index]=console.nextInt();
索引++;
}而(索引欢迎。请参阅评论中的答案。希望清楚:-)
好的,让我们说清楚
do while循环在计算while条件之前执行do块。然后,如果while条件的计算结果为true,它将再次执行do块并重复执行,直到while条件的计算结果为false
console.nextInt和console.hasNextInt都从控制台读取输入。因此,作为do块的一部分,“输入一个数字:\t”已经打印出来,第一个nextInt()调用接受了输入“1”,然后是增量,然后是while条件的求值-console.hasNextInt(),它再次等待输入并接受“2”。这解释了为什么在用户输入“2”之前没有打印“输入数字:\t”
当然,因为已经输入了值2,while条件的计算结果为true,并且再次执行do块并继续执行
也许您需要while循环。相反,只有当while条件的计算结果为true时,才会执行代码块
System.out.print("Enter a number:\t");
while(console.hasNextInt()){
v[index] = console.nextInt();
index++; // increments
System.out.print("Enter a number:\t");
}
你确定要使用do-while
循环而不是while
循环吗?@P.Soutzikevich如果你只是用while
代替do…while
他们将看不到第一个“输入一个数字”。@FedericoklezCulloca哦,我还以为OP也在循环块之外。我的badThis与OP的代码完全相同,只是您添加了注释(除非我跳过了您无意中所做的更改)。。这对理解错误的输出有什么帮助?这确实好得多,+1来自我:)@KevinCruijssen谢谢你的评论。乐于改进:-)
System.out.print("Enter a number:\t");
while(console.hasNextInt()){
v[index] = console.nextInt();
index++; // increments
System.out.print("Enter a number:\t");
}