Java:从控制台只获取1行整数?

Java:从控制台只获取1行整数?,java,input,console,newline,java-8,Java,Input,Console,Newline,Java 8,我最近学习了Java,在一些控制台输入方面遇到了问题 基本上,我希望以如下格式从控制台读取int数组: 1 2 3 4 5 6 Scanner get = new Scanner(System.in); List<Integer> elements = new ArrayList<>(); while (get.hasNextInt()) { elements.add(get.nextInt()); } 我查看了论坛上的

我最近学习了Java,在一些控制台输入方面遇到了问题

基本上,我希望以如下格式从控制台读取int数组:

1 2 3 4 5 6
Scanner get = new Scanner(System.in);
List<Integer> elements = new ArrayList<>();

while (get.hasNextInt()) {           
        elements.add(get.nextInt());
    }
我查看了论坛上的一些示例,并决定使用scannernextInt()方法来实现这一点

我的代码当前如下所示:

1 2 3 4 5 6
Scanner get = new Scanner(System.in);
List<Integer> elements = new ArrayList<>();

while (get.hasNextInt()) {           
        elements.add(get.nextInt());
    }
Scanner get=新扫描仪(System.in);
列表元素=新的ArrayList();
而(get.hasNextInt()){
元素添加(get.nextInt());
}
这段代码的问题是,当我在控制台上点击“回车”时,while循环不会停止。 这意味着,在我输入一些数字(1 3 5 7)然后按enter键之后,程序不会继续执行,而是等待更多的整数。它停止的唯一方法是我向控制台输入一个字母

我尝试添加!get.hasNextLine()作为while循环中的一个条件,但这没有帮助


如果有人知道如何解决这个问题,我会非常感激。

你可以读一行,然后用它来构建另一个
扫描仪。大概

if (get.hasNextLine()) {
    String line = get.nextLine();
    Scanner lineScanner = new Scanner(line);
    while (lineScanner.hasNextInt()) {          
        elements.add(lineScanner.nextInt());
    }
}

构造函数(根据Javadoc)构造一个新的
扫描器
,该扫描器生成从指定字符串扫描的值。

您可以读取一行,然后使用该行构造另一个
扫描器
。大概

if (get.hasNextLine()) {
    String line = get.nextLine();
    Scanner lineScanner = new Scanner(line);
    while (lineScanner.hasNextInt()) {          
        elements.add(lineScanner.nextInt());
    }
}
构造函数(根据Javadoc)构造一个新的
扫描器
,该扫描器生成从指定字符串扫描的值

您可以使用以下命令。用户只需输入每个整数,而无需按enter键,最后按enter键

Scanner get = new Scanner(System.in);
List<Integer> elements = Stream.of(get.nextLine().split(" "))
                               .map(Integer::parseInt)
                               .collect(Collectors.toList());
Scanner get=新扫描仪(System.in);
List elements=Stream.of(get.nextLine().split(“”)
.map(整数::parseInt)
.collect(Collectors.toList());
您可以使用以下命令。用户只需输入每个整数,而无需按enter键,最后按enter键

Scanner get = new Scanner(System.in);
List<Integer> elements = Stream.of(get.nextLine().split(" "))
                               .map(Integer::parseInt)
                               .collect(Collectors.toList());
Scanner get=新扫描仪(System.in);
List elements=Stream.of(get.nextLine().split(“”)
.map(整数::parseInt)
.collect(Collectors.toList());

如果你只想读一行,最简单的答案可能是最好的:)

Scanner-in=新的扫描仪(System.in);
字符串hString=in.nextLine();
字符串[]hArray=hString.split(“”)


现在,在array hArray中,您拥有来自input的所有元素,您可以像hArray[0]一样调用它们。

如果您想阅读只有一行。最简单的答案可能是最好的:)

Scanner-in=新的扫描仪(System.in);
字符串hString=in.nextLine();
字符串[]hArray=hString.split(“”)


现在,在array hArray中,您拥有来自input的所有元素,您可以像hArray[0]

那样调用它们,在双引号内输入,如
“1 2 3 4 5 6”
,用
下一行()阅读,稍后拆分。在双引号内输入,如
“1 2 3 4 5 6”
,用
下一行()阅读,稍后拆分。谢谢。虽然它不是直接读取int,而是读取字符串并对其进行拆分和解析。这是我问题的一个非常简洁的解决方案:)+1是的,你是wright,但是你可以简单地将字符串逐整数解析为int。虽然它不是直接读取int,而是读取字符串并对其进行拆分和解析。这是我问题的一个非常简洁的解决方案:)+1是的,你是wright,但你可以通过Integer.parseInt(yourString)方法简单地将字符串解析为int