Powrót do początku programu - JAVA

0

Cześć,
Chciałbym aby mój program kiedy wbije cokolwiek innego niż 1, 2 lub 3 ( przejście do default ) cofał mnie do początku programu - do opcji wyboru(switch'a).

package default;
import java.util.Scanner;

public class heya{
  public static void main(String[] args){
	  System.out.println("Wybierz 1, 2 lub 3");
	  Scanner odczyt = new Scanner(System.in);
	  int a1 = odczyt.nextInt();
	  switch(a1) {
	  case 1:
		System.out.println("Wybrałeś 1");
		 break;
	  case 2:
		 System.out.println("wybrałeś 2");
	 	break;
	  case 3:
		  System.out.println("Wybrałeś 3");
	default: 
		while(a1!=1||a1!=2||a1!=3)
			continue;
	  }
  }
}

Próbowałem już "return" i "System.exit(0)" ale zamiast powracać to program się zamyka a używając "Continue" mam nieskończoną pętlę.
Będe wdzieczny za pomoc :)

1

Możesz użyć tego switcha w pętli do..while(x), gdzie case-y ustawią x na false a default ustawi x na true

0
baant napisał(a):

Możesz użyć tego switcha w pętli do..while(x), gdzie case-y ustawią x na false a default ustawi x na true

Nie bardzo mi to wychodzi :/

import java.util.Scanner;

public class heya{
  public static void main(String[] args){
	  Scanner odczyt = new Scanner(System.in);
	  boolean x = true;
	  System.out.println("Wybierz 1, 2 lub 3");
	 String a1 = odczyt.next();
	  do {
		  switch(a1) {
		  case "1":
			 x = false;
			System.out.println("Wybrałeś 1");
			 break;
		  case "2":
			  x = false;
			 System.out.println("wybrałeś 2");
		 	break;
		  case "3":
			  x= false;
			  System.out.println("Wybrałeś 3");
			  break;
		  default: 
			  a1 = true;
				break;
		  }
	  }while (x);
		  
	  }
	  
  }


Wychodzi mi znowu nieskończona pętla.

0
        while (true) {
            System.out.println("Wybierz 1, 2 lub 3");
            Scanner odczyt = new Scanner(System.in);
            int a1 = odczyt.nextInt();
            switch(a1) {
                case 1:
                    System.out.println("Wybrałeś 1");
                    return;
                case 2:
                    System.out.println("wybrałeś 2");
                    return;
                case 3:
                    System.out.println("Wybrałeś 3");
                    return;
            }
        }
0

Okay. Nie doczytałem do opcji wyboru(switch'a).

0

Niestety ale program sie zamyka w obydwu przypadkach. Zacząłem się zastanawiać czy to nie chodzi o funkcję void - ona nie zwraca wartości jeżeli się nie mylę. Co jakbym zamiast void użył czegoś innego?
Btw. przepraszam za długie nieodpisywanie :)

0

Jest jeszcze jedna opcja:

System.out.println("Wybierz 1, 2 lub 3")

Dodaj " lub 0 by wyjść"
a następnie:

do {
      switch(a1) {
      case 1:
        System.out.println("Wybrałeś 1");
         break;
      case 2:
         System.out.println("wybrałeś 2");
        break;
      case 3:
          System.out.println("Wybrałeś 3");
          break;
     case 0:
          System.out.println("Żegnaj");
          break;
      default: 
         System.out.println("Wybór nieprawidłowy spróbuj jeszcze raz");
         break;
      }
} while (a1 != 0);


Zacząłem się zastanawiać czy to nie chodzi o funkcję void - ona nie zwraca wartości jeżeli się nie mylę. Co jakbym zamiast void użył czegoś innego?

O_o Jak sobie inaczej wyobrażasz tę linijkę:

 public static void main(String[] args)

?

0

Spróbuj tak:

public static void main(String[] args) {
    Scanner odczyt = new Scanner(System.in);
    System.out.println("Wybierz 1, 2 lub 3");
    int a = 0;
    boolean valid = false;
    while (!valid) {

      while (!odczyt.hasNextInt()) {
        odczyt.nextLine();
        System.out.println("Wpisz liczbę całkowitą!!!");
      }

      a = odczyt.nextInt();

      switch (a) {
        case 1:
          System.out.println("Wybrałeś 1");
          valid = true;
          break;
        case 2:
          System.out.println("wybrałeś 2");
          valid = true;
          break;
        case 3:
          System.out.println("Wybrałeś 3");
          valid = true;
          break;
        default:
          System.out.println("Musisz wybrać 1, 2 lub 3");
      }
    }
  }
0
Serechiel napisał(a):

Jest jeszcze jedna opcja:

System.out.println("Wybierz 1, 2 lub 3")

Dodaj " lub 0 by wyjść"
a następnie:

do {
      switch(a1) {
      case 1:
        System.out.println("Wybrałeś 1");
         break;
      case 2:
         System.out.println("wybrałeś 2");
        break;
      case 3:
          System.out.println("Wybrałeś 3");
          break;
     case 0:
          System.out.println("Żegnaj");
          break;
      default: 
         System.out.println("Wybór nieprawidłowy spróbuj jeszcze raz");
         break;
      }
} while (a1 != 0);


Zacząłem się zastanawiać czy to nie chodzi o funkcję void - ona nie zwraca wartości jeżeli się nie mylę. Co jakbym zamiast void użył czegoś innego?

O_o Jak sobie inaczej wyobrażasz tę linijkę:

 public static void main(String[] args)

?
Nieskończona pętla wychodzi
a co do pytania to sam nie wiem ale może są inne metody zrobienia tego, może coś w tym stylu

public class Punkt {  
	int wspX;  
	int wspY; 
	}
	void ustawX(int x){   
		wspX = x; 
		}  
	void ustawY(int y){
		wspY = y;  
	} 
	int dajX(){   	
		return wspX;  
	}  
	int dajY(){ 
		return wspY;  
	} 
}

0

Popróbowałem i w końcu coś osiągnąłem, ale to wciąż nie to co chce.

	    Scanner odczyt = new Scanner(System.in);
	    int b = 1;
	    while(b>0) {
		    System.out.println("Wybierz 1, 2 lub 3 albo 4 aby wyjsc"); 
		     int a = odczyt.nextInt();
		      switch (a) {
		        case 1:
		          System.out.println("Wybraleś 1");
		          System.out.println("[1] Od nowa [2] wyjdz");
			          if(odczyt.nextInt()==1) {
			        	  break;
			          }
		        case 2:
		          System.out.println("Wybraleś 2");
		        case 3:
		          System.out.println("Wybraleś 3");
		        default: 
		      }
		    }
	  }

Program wraca do poprzedniej formy ale nie wyłącza się. Zamiast tego pokazuje reszte case'ow i wraca do startu. Pytanie: Jak to naprawić?

0

@Jul Bed:
W tej wersji powinno być OK:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        int a1;
        do {
            System.out.println("Wybierz 1, 2 lub 3 albo 0 by wyjśc");
            a1 = odczyt.nextInt();
            switch (a1) {
                case 1:
                    System.out.println("Wybrałeś 1");
                    break;
                case 2:
                    System.out.println("wybrałeś 2");
                    break;
                case 3:
                    System.out.println("Wybrałeś 3");
                    break;
                case 0:
                    System.out.println("Żegnaj");
                    break;
                default:
                    System.out.println("Wybór nieprawidłowy spróbuj jeszcze raz");
                    break;
            }


        } while (a1 != 0);

    }
}

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