Proste menu

0

Witam Napisałem proste menu , prosiłbym o ocene.I ma pytanko, jak zrobić aby użytkownik sam decydował kiedy chce przerwać wykonywanie programu, który wykonywałby sie w pętli.Zrobiłem to na pętli do while, ale coś mi nie działa.Zarówno w głównym programie jak i w podprogramach.W sumie rzecz jest prosta ale nie moge wyczaić błędu.Ps Jestem początkujący.POZDRAWIAM
package szablonmenu;

import java.io.*;
public class Main {
public static int nrprogramu ;

     static void Powitanie() {             

          System.out.println(" Witam w programie autorstwa Rafała Ficka. ");  // Przywitanie
          System.out.println(" Program 1 ....");                              // Ogólny opis programów
          System.out.println(" Program 2 ....");
          System.out.println(" Program 3 ....");
          System.out.println(" Program 4 ....");
          System.out.println("Podaj nr programu, który chcesz wykonać.");     
          }

     static int wczytaj() throws IOException {               

          BufferedReader wej = new BufferedReader(                           //Wczytanie nr wybranego
          new InputStreamReader (System.in));                                //programu
          String s;
          int numer;
          s = wej.readLine();
          numer = Integer.parseInt(s);
          return numer;
          }

     
     static void menuProgramow() throws IOException{      

          System.out.println(" Program " + nrprogramu ); 
          System.out.println(" Wybierz 1 jeżeli chcesz przeczytać instrukcje i opis do Programu " + nrprogramu );
          System.out.println(" Podanie innej liczby spowoduje pominięcie instrukcji. ");        
    
          if ( wczytaj()==1 ) {                                    //
              System.out.println(" Program ma za zadanie... "); }
    
          else if ( wczytaj()==2 ) {
              System.out.println(" Program ma za zadanie... "); }
         
          else if ( wczytaj()==3 ) {
              System.out.println(" Program ma za zadanie... "); }
  
          else if ( wczytaj()==3 ) {
              System.out.println(" Program ma za zadanie... "); }
    
          System.out.println(" Uruchom program naciskając dowolną liczbe. ");
          System.out.println(" Naciśnięcie 0 zakończy program. ");
    
    int przerwanieProgramu;
    
    if  ( nrprogramu == 1 ) {

     przerwanieProgramu = wczytaj();
 
     do  {    Program1();

    }

    while ( przerwanieProgramu == 0); 
     
     }
    
    else if  ( nrprogramu == 2 ) {

    przerwanieProgramu = wczytaj();
 
     do  {    Program2();

    }

    while ( przerwanieProgramu == 0); 
     
     }
    
     else if  ( nrprogramu == 3 ) {

     przerwanieProgramu = wczytaj();
 
     do  {    Program2();

    }

    while ( przerwanieProgramu == 0); 
     
     }
    
    else if  ( nrprogramu == 4 ) {

    przerwanieProgramu = wczytaj();
 
     do  {    Program2();

    }

    while ( przerwanieProgramu == 0); 
     
     }
            
  }

static int Program1() {

int z = 1;

System.out.println(z);

return z;

}

static int Program2() {

int z = 2;

System.out.println(z);

return z;

}

static int Program3() {

int z = 3;

System.out.println(z);

return z;

}

static int Program4() {

int z = 4;

System.out.println(z);

return z;

}

public static void main(String[] args) throws IOException {

Powitanie();

int wczytanaCyfra = wczytaj ( );

switch ( wczytanaCyfra ) {

    case 1:

    nrprogramu=1;

    menuProgramow();

           break;

    case 2:

    nrprogramu=2;

    menuProgramow();

           break;

    case 3:

    nrprogramu=3;

    menuProgramow();

           break;

     case 4:

    nrprogramu=4;

    menuProgramow();

           break;

    default:

          System.out.println("Podałeś nieprawidłowy numer programu.");

       }          
 }

}

0

Bo tu jest błąd na błędzie. Nawet trudno to analizować bo jedyne co tu ma prawo działać, to wyświetlanie napisów.
Pobieżna lista błędów:
Sprawdzasz wciśnięcia klawiszy w blokach warunkowych if, ba, to jeszcze nic - sprawdzasz wciśnięcia klawiszy sterujące instrukcją if w samym warunku tej instrukcji, co innego wyświetlasz, a co innego testujesz, używasz zmiennej public i traktujesz ją jak zmienną globalną, używasz zmiennych i metod static gdy nie ma ku temu żadnego powodu, masz pomylone numery procedur, wielokrotnie piszesz, ten sam kod.
Ech, tu wszystko jest niestety źle.
Przemyśl co chcesz zrobić i rób to małymi kroczkami. Nie używaj pól public. Stwórz egzemplarz obiektu Main i na jego rzeczy wywołuj jego metody. Jak coś musisz napisać więcej niż raz, to powinno to być w pętli lub osobnej metodzie. To tak co pobieżnie widzę.
Sam program można skrócić do 10 linijek, pomijając to, że wpada on w wieczną pętlę (zawiesza się, drukując cyfrę).

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