Java Scanner从用户那里获得许多输入并打印出来

时间:2014-07-20 17:48:29

标签: 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());
}

我的第一个问题是如何识别输入的类型并将此信息存储在变量中。 我的第二个问题是我在运行代码时进入无限循环。输入输入后,程序将打印所有输入,然后再次等待输入。我该如何解决这个问题? 我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

这可能会对您有所帮助:

  • 为什么在循环中调用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);

阅读Java7- The try-with-resources Statement

答案 1 :(得分:0)

试试这段代码 -

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

        }

    }

}