输入不匹配错误

时间:2015-10-13 13:54:06

标签: java java.util.scanner inputmismatchexception

所以,我在这里有一个小程序,我一直在收到输入不匹配错误。我将在代码下面发布错误消息。说实话,我有0线索为什么会出现错误。我检查了所有必需的变量都分配了正确的类型。如果我理解正确,当您尝试输入不期望的内容时会发生上述错误,对吧? (双而不是int或其他)。我可能在某个地方出现了一些我因某些原因无法看到的愚蠢错误,所以我很感激你的帮助。

    Scanner sc = new Scanner(System.in);

    int enEur = 0;
    int dvaEur = 0;
    boolean bankrot = false;
    int placilo;


    while (sc.hasNextInt() || bankrot == false){
        placilo = sc.nextInt();
         if(placilo == 1){
             enEur += placilo;
         }
         else{
             enEur --;
             bankrot = test(enEur);
             dvaEur ++;
         }
     }

所以,这是我的main()方法的内容。该行中出现错误:placilo = sc.nextInt()。这是所述错误的副本:

    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at evroSop.main(evroSop.java:16)

我输入的输入基本上是一行单独的整数,如:1 1 1 1 2 1 ......等等。我有不同的例子,所有这些都是不同长度的整数行。

Cherio,George

2 个答案:

答案 0 :(得分:1)

条件while (sc.hasNextInt() || bankrot == false)表示只要有更多输入 bankrot仍然为假,您就会继续尝试从扫描仪读取数据。因此,如果您的输入用完但仍未破产,您将获得一个例外,因为即使没有更多的输入,您也会尝试读取下一个输入。

条件应该是,而不是

答案 1 :(得分:0)

将该行读作String并将其拆分为int []

在hasNext()调用之后

String str = sc.nextLine();

并将此String拆分为int []

示例代码:

        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
                String str = sc.nextLine();
                String strArray[] = str.split(" ");
                int intArray[] = new int[strArray.length];

               for (int i = 0; i < intArray.length ; i++) {
                   intArray[i] = Integer.parseInt(strArray[i]);
               }

               for (int j : intArray) {
                    System.out.println(j);
               }
        }

输入:

  

1 123 456

输出:

1

123

456