接受用户输入后无法打印阵列

时间:2020-01-15 23:57:18

标签: java

我在接受来自键盘的输入并将其存储在数组中时缺少了一些东西。

这是我尝试过的:

    public static void main(String[] args) {
        System.out.println("Hello World");

        Scanner obj=new Scanner(System.in);
        System.out.println("enter sentence ");
        String[] inputArray = new String[10];
        int i = 0;
        while (obj.hasNext()){
           String word = (String) obj.next();
           inputArray[i] = word;
           System.out.println("word is  " + word);
           System.out.println("array is  " + inputArray[i]);

        }
        System.out.println("final array is  " + inputArray); //This line doesn't print. Why ?
     }

为什么在while循环后无法打印数组?

3 个答案:

答案 0 :(得分:3)

那是因为您已经在增加i

更改为

String word = (String) obj.next();
inputArray[i] = word;
System.out.println("word is  " + word);
System.out.println("array is  " + inputArray[i]);
// now increment
i++;

最后一行没有打印的原因是obj.hasNext正在阻止等待输入,您需要以某种方式中断,另请参阅java Scanner.hasNext() usage

答案 1 :(得分:0)

您可以使用for循环。

应该是这样的:

for(int I; i<inputArray.length;i ++){
System.out.println("word is  " + word);
System.out.println("array is  " + inputArray[i]);

}

答案 2 :(得分:0)

变量“ i”在错误的位置递增,因此System.out.println("array is " + inputArray[I])不输出任何值。

声明System.out.println("final array is " + inputArray)未到达,因为while循环永远不会退出。请参见下面的代码,我在10个条目之后退出了while循环,它将打印最终的数组。

    public static void main(String[] args) {
        System.out.println("Hello World");

        Scanner obj=new Scanner(System.in);
        System.out.println("enter sentence ");
        String[] inputArray = new String[10];
        int i = 0;
        while (obj.hasNext()){
            if(i >= 10){
                break;
            }
            String word = (String) obj.next();
            inputArray[i] = word;
            System.out.println("word is  " + word);
            System.out.println("array is  " + inputArray[i]);
            i++; //pls ignore this dumb error

        }
        System.out.println("final array is  " + inputArray); //This line doesn't print. Why ?
        Arrays.stream(inputArray).forEach(System.out::println);
    }