java 输出正确,但出现编译器错误

nhaq1z21  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(179)

一切都是输出的方式,但我得到编译器错误。我在ZyBooks上做这个。你能告诉我我做错了什么吗?

import java.util.Scanner;

public class Inputkey {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);

      String inputString = "";
      int inputInt = 0; 
      
      inputString = scnr.next();
      inputInt = scnr.nextInt();
      
      while ( !inputString.equals("Stop")){
         if ( inputInt <= 35) {
            System.out.println( inputString + ": reorder soon");
         }
         inputString = scnr.next();
         inputInt = scnr.nextInt();
         
      }
            
   }
}

我得到的错误:线程“main”异常

java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at Inputkey.main(Inputkey.java:18)
uajslkp6

uajslkp61#

使用inputString = scnr.nextLine();代替inputString = scnr.next();
Java Scanner的next()和nextLine()方法是nextLine()返回一行文本中的每个字符,直到回车,而next()将行拆分为单个单词,一次返回一个单独的文本字符串。

import java.util.Scanner;

public class Inputkey {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        String inputString = "";
        int inputInt = 0;

        inputString = scnr.nextLine();
        inputInt = Integer.parseInt(scnr.nextLine());

        while ( !inputString.equals("Stop")){
            if ( inputInt <= 35) {
                System.out.println( inputString + ": reorder soon");
            }
            inputString = scnr.nextLine();
            inputInt = Integer.parseInt(scnr.nextLine());
        }
    }
}

样品输入:

This is stackoverflow
35
stop
999
Stop

scanner.next()返回This,而scanner.nextLine()返回This is stackoverflow

相关问题