切换语句Java

时间:2013-06-09 15:39:23

标签: java arrays switch-statement java.util.scanner

目前正在制作我的第一个日历程序,但我有一个问题

public class Kalender {
public static void main(String[] args) {
    Scanner userInput = new Scanner(System.in);

    String[] termine = new String[24];
    for (int i = 0; i<24;i++){
        termine[i]= "";

    }
    boolean fertig = false;
    while(!fertig){
        System.out.println("1 = Neuer Eintrag");
        System.out.println("2 = Termine ausgeben");
        System.out.println("3 = Programm beenden");

        int auswahl = userInput.nextInt();
        System.out.println("Ihre Auswahl: "+ auswahl);

        switch (auswahl){
            case 1:

                System.out.println("Wie viel Uhr? ");
                int nummer = userInput.nextInt();

                if (nummer<0 | nummer > 23) {
                    System.out.println("Eingabefehler");
                    break;
                }
                System.out.println("Termin: ");             //!Here Is The Problem!
                String eingabe = userInput.nextLine();

                termine[nummer] = eingabe;
                break;

            case 2:
                for (int i = 0; i<24;i++){
                    System.out.println(i+ "Uhr: "+termine[i]);
                    break;
                }

            case 3:
                fertig=true;
                break;

            default:
                System.out.println("Eingabefehler");

        }
    }
}

}

输出:

1 = Neuer Eintrag
2 = Termine ausgeben
3 = Programm beenden
1
Ihre Auswahl: 1
Wie viel Uhr? 
3
Termin: 
1 = Neuer Eintrag
2 = Termine ausgeben
3 = Programm beenden

为什么此代码不能提供在System.out.println("Termin: ");语句后输入文本的可能性?

1 个答案:

答案 0 :(得分:3)

您应该添加另一个userInput.nextLine();在int nummer = userInput.nextInt();之后。

那是因为userInput.nextInt();只读取int值(并跳过\n,这是你在之后按下的回车键)。

因此添加另一个userInput.nextInt();“吞下” \n,下一个将读取实际的字符串,我们都会很高兴。