Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scanner从用户处获取大量输入并打印出来_Java - Fatal编程技术网

Java Scanner从用户处获取大量输入并打印出来

Java Scanner从用户处获取大量输入并打印出来,java,Java,我正在做一个小程序。我需要从用户那里得到一些整数并打印出来。我还需要确定输入是否有效。这是我的密码: List<Integer> tokens = new ArrayList<Integer>(); Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { tokens.add(sc.nextInt()); System.out.println(sc.nextInt()); } 我的第一个

我正在做一个小程序。我需要从用户那里得到一些整数并打印出来。我还需要确定输入是否有效。这是我的密码:

List<Integer> tokens = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);    
while(sc.hasNextInt()) {
  tokens.add(sc.nextInt());
  System.out.println(sc.nextInt());
}
我的第一个问题是如何识别输入的类型并将此信息存储在变量中。 我的第二个问题是,当我运行代码时,我进入了一个无限循环。输入输入后,程序将打印所有内容,然后再次等待输入。我如何解决这个问题? 我真的很感谢你的帮助

这可能会帮助您:

为什么在循环中调用sc.nextInt 2次而不检查下一个值? 使用诸如-1之类的无效数字来中断循环。 别忘了关上小溪。 示例代码:

List<Integer> tokens = new ArrayList<Integer>();
try (Scanner sc = new Scanner(System.in)) {
    while (sc.hasNextInt()) {
        int i = sc.nextInt();
        if (i == -1) {
            break;
        }
        tokens.add(i);
        System.out.println(i);
    }
}
System.out.println(tokens);
阅读

尝试以下代码-

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Stax {

    public static void main(String[] args) {

        List<Integer> tokens = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in);
        String data = "";
        System.out.println("Enter some numbers...");

        while (sc.hasNext()) {

            data = sc.next();

            if (data.equalsIgnoreCase("EXIT")) {
                System.out.println();
                break;
            } 

            try {
                tokens.add(Integer.parseInt(data));
                System.out.println(sc.next());
            } catch (NumberFormatException e) {
                System.out
                        .println("Error: Your input string cannot be converted to a number.");
                e.printStackTrace();
            }

        }

    }

}

ScannernextInt做什么?hasNextInt做什么?什么是无限循环?为while循环提供的布尔值有什么用途?提示:阅读一些教程如果sc.hasNextInt为true,程序将打印下一个整数,否则循环将结束。nextInt希望在每次调用它时使用另一个int。每个循环步骤调用两次。你没有一个无限循环,你有你不期望的阻塞。