Instrukcja switch i dodatkowy warunek

0

Gdy wpiszę zamiast 1,2,3 lub 4 jakiś tekst to zamiast przechodzić do defaulta wyskakuje błąd "Exception in thread "main" java.util.InputMismatchException"

Jednak gdy jest odwrotnie i zmienna jest string, a podajemy liczbę to wszystko działa.

Czy można to obejść ?

public class test {

    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        System.out.println("wpisz jeden dwa trzy lub cztery");
        int liczba = in.nextInt();

        switch (liczba)
        {

                  case 1:


                      System.out.println("wybrales 1");

            break;

                  case 2:
                      System.out.println("wybrales 2");
            break;

                  case 3:
                      System.out.println("wybrales 3");
            break;

                 case 4:
                     System.out.println("wybrales 4");
            break;

                default:
                    System.out.println("nie wpisales 1 2 3 ani 4");
            break;

        }

    }

}

1

No jak sam napisałeś, możesz sobie brać Stringa. Ewentualnie sprawdzać czy na wejściu jest int.

2

Poza tym wprowadzasz użytkownika w błąd. Każesz mu wpisać jeden, dwa, trzy lub cztery, a oczekujesz, że wpisze 1, 2, 3 lub 4.

0

Chciałem, żeby podczas wpisywania jakiś randomowych znaków typu String, wyskoczył komunikat taki jak w default ( nie używając ifów)

1
try
{
        int liczba = in.nextInt();
 
        switch (liczba)
        {
 
                  case 1:
 
                      System.out.println("wybrales 1");
 
            break;
 
                  case 2:
                      System.out.println("wybrales 2");
            break;
 
                  case 3:
                      System.out.println("wybrales 3");
            break;
 
                 case 4:
                     System.out.println("wybrales 4");
            break;
 
                default:
                    System.out.println("nie wpisales 1 2 3 ani 4");
            break;
 
        }
}
catch(InputMismatchException e)
{
    System.out.println("nie wpisales 1 2 3 ani 4");
}
1

Jeszcze jedna uwaga odnośnie:
"Jednak gdy jest odwrotnie i zmienna jest string, a podajemy liczbę to wszystko działa."

gdy masz zmienną typu int - musisz podać cyfrę/liczbę - np.:"abc" nie jest cyfrą/liczbą

gdy masz zmienną typu String - musisz podać ciąg znaków - zarówno: "abc" jak i "123" są ciągami znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1