我试图将新值放入数组中,但由于某种原因,扫描仪等待我的输入时进程终止。相关部分:数组: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 {} 仅用于测试目的和我自己搜索错误但我找不到它。
1 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
正如@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字符。
添加回答
举报
0/150
提交
取消