pętla while z pętlą switch w środku

0

Mam problem odnośnie działania tychże pętli.
Chciałbym aby za pomocą while móc wybierać na switchu różne opcje tak długo aż np nie wybiorę 4 która będzie kontynuować dalszy ciąg programu. wiem, że jeszcze powinienem mieć wybór wartości wewnątrz while'a lecz nie wiem jak to zrobić poprawnie.

poniżej kod

package pl.javastart.first;

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.PrintWriter;
import java.util.*;


public class wybor {
	public static int dziala(String[] args){
	 System.out.printf("zapodaj wartość: \n"); 
	    int h;
		Scanner licz4 = new Scanner(System.in);
		h = licz4.nextInt();
	     
	    System.out.printf("Enter 4 to exit\n");
	    
	    while(h!=4)
	    {
	        switch(h)
	        {
	            case 1:
	            	System.out.printf("Wybrano 1\n");
	                break;
	            case 2:
	            	System.out.printf("Wybrano 2\n");
	                break;
	            case 3:
	            	System.out.printf("Wybrano 3\n");
	                break;
	            default:
	            	System.out.printf("pomyłka, ale dalej jestes w petli\n"+h);
	        }
	        System.out.printf("Enter 4 to exit\n");
	      
	    }
	    System.out.printf("Out of While loop\n");
	   return h;
}
}
0
  1. switch nie jest pętlą.
  2. Metoda musi się nazywać main.
  3. Musisz czytać wielokrotnie, czytanie umieść wewnątrz pętli while.
0

wiem że main, tylko to akurat jest treść innej klasy. Czytanie umieścić w pętli, ok, tylko najpierw muszę wybrać pierwszy warunek, więc jak to mam zrobić? jeśli można przykład, zarys, będę naprawdę wdzięczny

0
public static int dziala(String[] args){
         System.out.printf("zapodaj wartość: \n"); 
            int h;
                Scanner licz4 = new Scanner(System.in);
                h = licz4.nextInt();
 
            System.out.printf("Enter 4 to exit\n");
 
            while(h!=4)
            {
                System.out.printf("zapodaj wartość: \n"); 
                licz4 = new Scanner(System.in);
                h = licz4.nextInt();
                switch(h)
                {
                    case 1:
                            System.out.printf("Wybrano 1\n");
                        break;
                    case 2:
                            System.out.printf("Wybrano 2\n");
                        break;
                    case 3:
                            System.out.printf("Wybrano 3\n");
                        break;
                    default:
                            System.out.printf("pomyłka, ale dalej jestes w petli\n"+h);
                }
                System.out.printf("Enter 4 to exit\n");
 
            }
            System.out.printf("Out of While loop\n");
           return h;
}
1

Sorry,

System.out.printf("zapodaj wartość: \n"); 
                licz4 = new Scanner(System.in);
                h = licz4.nextInt();

umieść po System.out.printf("Enter 4 to exit\n"); przed zamknieciem petli while.

eko napisał(a):

public static int dziala(String[] args){
System.out.printf("zapodaj wartość: \n");
int h;
Scanner licz4 = new Scanner(System.in);
h = licz4.nextInt();

        System.out.printf("Enter 4 to exit\n");

        while(h!=4)
        {
            System.out.printf("zapodaj wartość: \n"); 
            licz4 = new Scanner(System.in);
            h = licz4.nextInt();
            switch(h)
            {
                case 1:
                        System.out.printf("Wybrano 1\n");
                    break;
                case 2:
                        System.out.printf("Wybrano 2\n");
                    break;
                case 3:
                        System.out.printf("Wybrano 3\n");
                    break;
                default:
                        System.out.printf("pomyłka, ale dalej jestes w petli\n"+h);
            }
            System.out.printf("Enter 4 to exit\n");

        }
        System.out.printf("Out of While loop\n");
       return h;

}

1

A nie prosciej tak:

//package pl.javastart.first;
 
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.PrintWriter;
import java.util.*;
 
 
public class Wybor 
{
        public static void main(String[] args)
        {
            int h;
            do
            {
                System.out.printf("zapodaj wartość: \n"); 
                Scanner licz4 = new Scanner(System.in);
                h = licz4.nextInt();
 
                System.out.printf("Enter 4 to exit\n");
 
           
                switch(h)
                {
                    case 1:
                            System.out.printf("Wybrano 1\n");
                        break;
                    case 2:
                        System.out.printf("Wybrano 2\n");
                        break;
                    case 3:
                        System.out.printf("Wybrano 3\n");
                        break;
                    default:
                        System.out.printf("pomyłka, ale dalej jestes w petli\n"+h);
                }
                System.out.printf("Enter 4 to exit\n");

        } while(h!=4);
        System.out.printf("Out of While loop\n");
       //return h;
}
}
0

wielkie dzięki za pomoc :)

0

A nie lepiej gdyby nie wywoływać konstruktora klasy Scanner co bieg pętli ? =.=

public class Wybor 
{
        public static void main(String[] args)
        {
            int h;
            Scanner licz4 = new Scanner(System.in);
            do
            {
                System.out.printf("zapodaj wartość: \n"); 
                h = licz4.nextInt();
 
                switch(h)
                {
                    case 1:
                            System.out.printf("Wybrano 1\n");
                        break;
                    case 2:
                        System.out.printf("Wybrano 2\n");
                        break;
                    case 3:
                        System.out.printf("Wybrano 3\n");
                        break;
                    default:
                        System.out.printf("pomyłka, ale dalej jestes w petli\n"+h);
                }
                System.out.printf("Enter 4 to exit\n");
 
        } while(h!=4);
        System.out.printf("Out of While loop\n");
       //return h;
}
}

PACH od razu lepiej.

1

Ten kod mnie boli... naprawdę...

Co do tematu to polecam poczytać nasze kompendium > Jak stworzyć menu w konsoli

1

Ja to na szybko wczoraj poprawiłem. Tak aby tylko działało:) Autor pewnie dopiero zaczyna przygodę z programowaniem:) Bądźmy wyrozumiali.

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