未预定义输入或“输入到开关”中输入错误

时间:2018-09-16 13:32:03

标签: java switch-statement user-input

当输入与数字不同时如何设置消息以不提供错误“线程“ main”中的异常java.util.InputMismatchException”?

我必须使用if / else语句或什么? 请在我可怜的java中帮助我:)

public static void main(String[] args) {

    System.out.println("Oceń konika od 1 do 6");

    Scanner PodajCyfre = new Scanner( System.in ); //nadanie zmiennej input PodajCyfre


    int WygladKonika = PodajCyfre.nextInt(); // przypisanie PodajCyfre do wartości


    switch (WygladKonika) {

        case 1 :
            System.out.println("Ten konik jest brzydki i mi sie kompletnie nie podoba");
            break;
        case 2:
            System.out.println("Nie jest za ładny ten konik, ale widziałam brzydsze");
            break;
        case 3:
            System.out.println("Taki średni jest ten konik");
            break;
        case 4:
            System.out.println("Ładny konik");
            break;
        case 5:
            System.out.println("Śliczny konik bardzo mi sie podoba");
            break;
        case 6:
            System.out.println("To jest najpiekniejszy konik jakiego widziałam. Uwielbiam go !!");
            break;
        default:
            System.out.println("To nie jest cyfra od 1 do 6");


    }
}

}

3 个答案:

答案 0 :(得分:1)

在强制转换为Int扫描仪输入之前进行检查。因此,代码将在while循环中输入。

   public static void main(String[] args) {


        Scanner PodajCyfre = new Scanner(System.in); //nadanie zmiennej input PodajCyfre

        System.out.println("Oceń konika od 1 do 6");
        while (!PodajCyfre.hasNextInt()) {
            System.out.println("Please write a number ! Oceń konika od 1 do 6");
            PodajCyfre.next();
        }

        int WygladKonika = PodajCyfre.nextInt(); // przypisanie PodajCyfre do wartości

        switch (WygladKonika) {

            case 1:
                System.out.println("Ten konik jest brzydki i mi sie kompletnie nie podoba");
                break;
            case 2:
                System.out.println("Nie jest za ładny ten konik, ale widziałam brzydsze");
                break;
            case 3:
                System.out.println("Taki średni jest ten konik");
                break;
            case 4:
                System.out.println("Ładny konik");
                break;
            case 5:
                System.out.println("Śliczny konik bardzo mi sie podoba");
                break;
            case 6:
                System.out.println("To jest najpiekniejszy konik jakiego widziałam. Uwielbiam go !!");
                break;
            default:
                System.out.println("To nie jest cyfra od 1 do 6");


        }
    }

答案 1 :(得分:0)

按如下方式读取int

int WygladKonika;
try {
    WygladKonika = PodajCyfre.nextInt();
} catch (InputMismatchException e) {
    System.out.println("Input can't be converted to an integer");
    // exit, read another value, etc
}

答案 2 :(得分:0)

使用try-catch块捕获java.util.InputMismatchException并在发生此异常时显示消息。

try {
    Scanner PodajCyfre = new Scanner(System.in); //nadanie zmiennej input PodajCyfre
    int WygladKonika = PodajCyfre.nextInt(); // przypisanie PodajCyfre do wartości

    switch (WygladKonika) {
        //
    }
} catch (InputMismatchException e) {
    // Exception caught, show message
    System.out.println("Invalid input");
}