如何使用两个扫描仪对象从字符串中获取int值?

时间:2017-03-14 19:44:13

标签: java input nosuchelementexception

我真的很擅长编码,现在我需要从用户那里分别用空格分隔一行输入,例如“0 1 2”,然后在该字符串中取入int并将它们放在单独的int变量中

这是我到目前为止所做的:

Scanner scan = new Scanner(System.in); //takes input from user
input = scan.nextLine();
Scanner intValues = new Scanner(input); //takes input from the "input" variable

然后我将第一个int值放入变量并得到一个“NoSuchElementException”

int x = intValues.nextInt();

我在这里做错了什么?此外,我不允许使用数组进行此分配。

3 个答案:

答案 0 :(得分:1)

无需使用2 scanner来读取输入。您甚至可以使用一个scanner来实现此目的。像这样:

Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
int z = scanner.nextInt();

答案 1 :(得分:1)

您应始终在hasNext课程上使用Scanner方法,以避免NoSuchelementException例外。

请尝试以下代码段:

    Scanner scan = new Scanner(System.in); //takes input from user
    String input = scan.nextLine();
    Scanner intValues = new Scanner(input); 
    while(intValues.hasNextInt()) {
        int x = intValues.nextInt();
        System.out.println(x);
    }

或者尝试使用仅使用一个扫描仪的以下内容:

    Scanner scan = new Scanner(System.in); //takes input from user
    while(scan.hasNextInt()) {
        int x = scan.nextInt();
        System.out.println(x);
    }

答案 2 :(得分:-1)

我的尝试是这样的:

Scanner scan = new Scanner(System.in); //takes input from user
String input = scan.nextLine();
int start=0;
int string_counter=0;
String s1;
String s2;
String s3;
for (int index=0; index < input.length(); index++) {
     if (input.charAt(index)==' ' || index==input.length()-1) {
         if (string_counter==0) {
             s1=input.substring(start,index-1);
         }
         if (string_counter==1) {
             s2=input.substring(start,index-1);
         }
         if (string_counter==2) {
             s3=input.substring(start,index-1);
         }
         start=index+1;
         string_counter++;
     }
}

int x=Integer.valueOf(s1);

希望它有效并帮助你! 否则,如果允许阵列......

String[] parts=input.split(" ");