1

所以,我在这里有这个小程序,我一直收到输入不匹配错误。我将在代码下方发布错误消息。老实说,我有 0 线索为什么会出现错误。我已经检查了所有必需的变量是否都分配了正确的类型。如果我理解正确,当您尝试输入意外的内容时会发生上述错误,对吗?( double 而不是 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... 等等。我有不同的例子,所有这些都是不同长度的整数行。

切里奥,乔治

4

2 回答 2

1

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

条件应该是and, not or,可能。

于 2015-10-13T14:12:41.293 回答
0

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

在 hasNext() 调用之后,

String str = sc.nextLine();

并将此字符串拆分为 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

于 2015-10-13T14:05:36.060 回答