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");  
    }