Mam taki fragment kodu. Jak go skompiluje i uruchomie to kod nie działa tak jak wydaje mi się, że powinien działać. Otóż wypisują się opcje wyboru, następnie dokonuje wyboru 'm' lub 'k' i wyświetla mi się prawidłowo dokonany wybór. Niestety kolejnym razem gdy program wraca do pętli while po prostu pomija wczytywanie chara i wypisuje, że nic nie wybrałem i opcję default ze switcha. Następne przejście pętli jest już prawidłowe, takie dziwne zachowanie pomijające wczytywanie na początku pętli dzieję się za każym razem, jednorazowo po dokonaniu wyboru 'm' lub 'k'. Czy ktoś wie dlaczego tak się dzieje?
import java.io.*;
public class MonetaOrKostka {
public static void main(String args[]) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
char c='e';
System.out.print("m - Moneta \nk - Kostka \nz - Zakoncz\n");
while(true) {
try {
c=(char)reader.read(); //pomija co drugą pętle
}
catch(IOException e) { System.out.println("Blad odczytu");
}
System.out.println("Wybrales: " + c);
switch(c) {
case 'z': return;
case 'm': System.out.println("Rzuczm moneta"); break;
case 'k': System.out.println("Rzuczm koscia"); break;
default: System.out.println("Zly wybor, sprobuj ponownie");
}
}
}
}