进程意外终止

我试图将新值放入数组中,但由于某种原因,扫描仪等待我的输入时进程终止。


相关部分:


数组:


public static String folders[] = { "Ordner 1", "Ordner 2", "Ordner 3", "Ordner 4", "Ordner 5" };

public static BigDecimal value[] = new BigDecimal[5];

和虚空:


public static void session_start() {

    Scanner scanner = new Scanner(System.in);

    System.out.println("");

    System.out.println("Bitte gib einen Befehl ein: ");

    String eingabe = scanner.nextLine();

    switch (eingabe) {

    case "exit": {

        System.exit(1);

    }

    case "neuer Ordner": {

        BigDecimal new_value = new BigDecimal("0");

        System.out.println("Name des Ordners?");

        String name = scanner.nextLine();

        System.out.println("Der wievielte Ordner soll es sein (maximal 5)?");

        int order = scanner.nextInt();

        try {

            System.out.println("Möchtest du einen Betrag zuweisen?");

            String ja_nein = scanner.nextLine();

            if(ja_nein.equals("Ja") || ja_nein.equals("ja")) {

                System.out.println("Bitte gib den Betrag an: ");

                new_value = scanner.nextBigDecimal();

            }

        } catch (Exception f) {

            f.printStackTrace();

        }

        folders[order - 1] = name;

        value[order - 1] = new_value;

    }

    }

}

如果我来排队:


System.out.println("Möchtest du einen Betrag zuweisen?");

String ja_nein = scanner.nextLine();

该过程终止。


try {} 仅用于测试目的和我自己搜索错误但我找不到它。


梵蒂冈之花
浏览 93回答 1
1回答

慕尼黑8549860

正如@TiiJ7 在评论中所说。从同一个 Scanner 收集整数和字符串时必须小心,因为 nextInt() 将其\n留在缓冲区中,这将导致任何 nextLine 之后立即返回空。大多数经验丰富的 Java 开发人员实际上使用 2 个扫描仪,一个用于数字,另一个用于字符串。例如:Scanner stringInput = new Scanner(System.in);Scanner numInput = new Scanner(System.in);int valueToScan = numInput.nextInt();String nextLine = stringInput.nextLine();在您的情况下,该行:在扫描仪的内部缓冲区int order = scanner.nextInt();中留下一个\n字符。因此,当nextLine被调用时,它会立即返回一个空字符串,因为它会立即命中剩余的\n字符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java