Ik heb een stukje code dat als een menu dient te werken.
Een keuze kan gemaakt worden door een getal in te voeren, en af te sluiten met <enter>.
Handmatig werkt dit perfect, maar zodra ik een input file ga gebruiken (java bla < input.txt) gaat het mis. Alleen de eerste regel van de file wordt gelezen, en daarna retourneerd de functie readInputLine() alleen nog maar null's.
Voorbeeld:
Wanneer ik als input file het volgende gebruik:
Dan wordt één keer het menu weergegeven omdat de input 0 is.
Hierna echter wordt het menu oneindig vaak weergegeven, omdat er een NumberFormatException ontstaat (een null is dan ook geen int
), en na een NFException het menu opnieuw wordt weergegeven.
Kan iemand ontdekken wat er hier fout gaat?
Een keuze kan gemaakt worden door een getal in te voeren, en af te sluiten met <enter>.
Handmatig werkt dit perfect, maar zodra ik een input file ga gebruiken (java bla < input.txt) gaat het mis. Alleen de eerste regel van de file wordt gelezen, en daarna retourneerd de functie readInputLine() alleen nog maar null's.
Voorbeeld:
Wanneer ik als input file het volgende gebruik:
code:
1
2
| 1 2 |
Dan wordt één keer het menu weergegeven omdat de input 0 is.
Hierna echter wordt het menu oneindig vaak weergegeven, omdat er een NumberFormatException ontstaat (een null is dan ook geen int
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| public void mainMenu(){ System.out.println("1. Menu"); System.out.println("2. Iets anders"); String myChoice; boolean validInput = false; while(true){ myChoice = readInputLine(); int theChoice = 0; try{ theChoice = Integer.parseInt(myChoice); validInput = true; }catch (NumberFormatException e){ break; } if(validInput) switch(theChoice){ case 1: //Show menu break; case 2: //Quit System.exit(0); break; } } mainMenu(); } public static String readInputLine(){ try { BufferedReader fromConsole = new BufferedReader(new InputStreamReader(System.in)); String message; while (true) { message = fromConsole.readLine(); return message; } } catch (Exception ex) { System.out.println("Unexpected error while reading from console!"); } return "0"; } |
Kan iemand ontdekken wat er hier fout gaat?