Java - pętla wykonująca się do n potęgi razy

0

Tak jak w temacie, dziwne zjawisko.
Zamieszczam kod:

 		void wyswietl_wszystkie_filmy(){
			int tmpi;
		    for(int i = 0; i < ilosc_filmow; i++){ //gdy ilosc filmow wynosi 3, petla wykonuje sie 9 razy, gdy 2 - 4
		    	tmpi = i + 1;
		    	System.out.print("Film nr."+ tmpi + " - ");
		    	wszystkie_filmy[i].wypisz();
		    }
		}
 		void wypisz(){
			System.out.print("Tytul: " + tytul + "\n");
		}
 	    void dodaj_rezerwacje(){
	    	System.out.print("Dodaj rezerwacje:\n");      
	        wyswietl_wszystkie_filmy();
	        wybierz_film();	        
	        if(wybrany_film != 0)
	        {
	            wszystkie_filmy[wybrany_film-1].dodaj_rezerwacje();
	        }
	    }
 case 1: 
				kino.dodaj_rezerwacje();
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;

Jak to naprawić?

0

Pętla jest prawidłowa, dla i = 3, powinna się wykonać 3 razy. Masz błąd w innym miejscu.
Czyli pewnie wywołujesz metodę dodaj_rezerwacje() kilka razy.

P.S. używaj camel case w javie zamiast podkreślenia.

0

Tylko gdzie? Załączyłem wszystko co powiązane i sam też nie widzę takiego miejsca.

Edit: To wtedy komenda

System.out.print("Dodaj rezerwacje:\n");

wykonała by się 3krotnie, a wykonuje się tylko raz

Edit2: Tak wygląda output:

 Dodaj rezerwacje:
Film nr.1 - Tytul: Władca Pierścieni Drużyna Pierścienia
Film nr.2 - Tytul: Szybcy i Wściekli III Tokio Drift
Film nr.3 - Tytul: Pasażer
Film nr.1 - Tytul: Władca Pierścieni Drużyna Pierścienia
Film nr.2 - Tytul: Szybcy i Wściekli III Tokio Drift
Film nr.3 - Tytul: Pasażer
Wybierz numer filmu:
(lub 0 by wyjść)

Edit3: Nie do n razy tylko podwójnie, teraz zauważyłem

0

Pewnie nie masz gdzieś break;. Pokaż cały kod

0
 import java.util.Scanner;

public class main {
	
	public
		final static int ilosc_filmow = 3;
		final static int ilosc_miejsc = 30;
	
	public static void wyswietl_menu_glowne(){			//Menu główne
		System.out.print("System rezerwacji miejsc\n");
		System.out.print("Wybierz opcje:\n\n");
		System.out.print("1) Dodaj rezerwacje\n");
		System.out.print("2) Usuń rezerwacje\n");
		System.out.print("3) Sprawdz miejsce\n");
		System.out.print("4) Wyswietl wszystkie miejsca\n");
		System.out.print("5) Wyswietl wolne miejsca\n");
		System.out.print("6) Wyswietl zarezerwowane miejsca\n");
		System.out.print("0) Zamknij system\n");
	}

	public static void main(String[] args) {
		Kino kino = new Kino();
		Film film = new Film();
		
		// Miejsce testowe
				
		kino.dodaj_film("Władca Pierścieni Drużyna Pierścienia");
		kino.dodaj_film("Szybcy i Wściekli III Tokio Drift");
		kino.dodaj_film("Pasażer");
		
		// Koniec miejsca testowego
		
		int wybor,
			numer_sali;
		String tmp;
		Scanner odczyt = new Scanner(System.in);
		wyswietl_menu_glowne();
		wybor = odczyt.nextInt();
		
		while(wybor != 0){
			switch(wybor){
			case 1: 
				kino.dodaj_rezerwacje();
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			case 2: 
				System.out.print("Podaj numer sali: \n");
				numer_sali = odczyt.nextInt();
				numer_sali = numer_sali - 1;
				
				if((numer_sali <= ilosc_filmow) && (numer_sali >= 0)){
					kino.wszystkie_filmy[numer_sali].anuluj_rezerwacje();
				}
				else{
					System.out.print("Nie ma takiej sali.\n");
				}
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			case 3: 
				System.out.print("Podaj numer sali: \n");
				numer_sali = odczyt.nextInt();
				numer_sali = numer_sali - 1;
				
				if((numer_sali <= ilosc_filmow) && (numer_sali >= 0)){
					kino.wszystkie_filmy[numer_sali].sprawdz_miejsce();
				}
				else{
					System.out.print("Nie ma takiej sali.\n");
				}
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			case 4:
				System.out.print("Podaj numer sali: \n");
				numer_sali = odczyt.nextInt();
				numer_sali = numer_sali - 1;

				kino.wszystkie_filmy[numer_sali].wyswietl_wolne_miejsca();
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			case 5: 
				System.out.print("Podaj numer sali: \n");
				numer_sali = odczyt.nextInt();
				numer_sali = numer_sali - 1;
				
				if((numer_sali <= ilosc_filmow) && (numer_sali >= 0)){
					kino.wszystkie_filmy[numer_sali].wyswietl_wolne_miejsca();
				}
				else{
					System.out.print("Nie ma takiej sali.\n");
				}
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			case 6: 
				System.out.print("Podaj numer sali: \n");
				numer_sali = odczyt.nextInt();
				numer_sali = numer_sali - 1;
				
				if((numer_sali <= ilosc_filmow) && (numer_sali >= 0)){
					kino.wszystkie_filmy[numer_sali].wyswietl_zarezerwowane_miejsca();
				}
				else{
					System.out.print("Nie ma takiej sali.\n");
				}
				
				System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
				tmp = odczyt.nextLine();
				wyswietl_menu_glowne();
				break;
			}
			wybor = odczyt.nextInt();
		}
	}

}
 import java.util.Scanner;

class Miejsce {
	public
		String 	imie, 
				nazwisko;
		int 	numer;
		Boolean rezerwacja;
		
		Miejsce(){	//Konstruktor domyślny
			imie ="";
			nazwisko ="";
			numer = 0;
			rezerwacja = false;
		}
		
		Miejsce(String _imie, String _nazwisko, int _numer, Boolean _rezerwacja){ //Konstruktor
			imie = _imie;
			nazwisko = _nazwisko;
			numer = _numer;
			rezerwacja = _rezerwacja;
		}
		
		void rezerwuj(){	//Funkcja rezerwująca
			if (rezerwacja == true){
				System.out.print("Miejsce jest już zarezerwowane.\n");
			}
			else{
				Scanner odczyt = new Scanner(System.in);
				System.out.print("Podaj imię.\n");				
				imie = odczyt.nextLine();
				System.out.print("Podaj nazwisko.\n");
				nazwisko = odczyt.nextLine();
				
				rezerwacja = true;
				
				System.out.print("Miejsce "+ numer + " zostało zarezerwowane dla: " 
						+ imie + " " + nazwisko +"\n");
			}
		}
		
		void anuluj_rezerwacje(){	//Funkcja anulująca
			if (rezerwacja == true){
				imie = "";
				nazwisko = "";
				
				rezerwacja = false;
				System.out.print("Rezerwacja anulowana.\n");
			}
			else{
				System.out.print("Nie ma takiej rezerwacji.\n");
			}
		}
		
		void wypisz(){	//Funkcja wypisująca
			if (rezerwacja ==  true){
				System.out.print("Numer: " + numer + " - " + imie + " " + nazwisko + "\n");
			}
			else{
				System.out.print("Numer: " + numer + " - miejsce wolne\n");
			}
		}
};
 import java.util.Scanner;

class Film {
	private	
		String tytul;
		final int ilosc_miejsc = 30;
		Miejsce[] wszystkie_miejsca = new Miejsce[ilosc_miejsc];
		int wybrane_miejsce = 0,
			ilosc_dodanych_filmow;

	public
		Film(){
			tytul = "";
			for(int i = 0; i < ilosc_miejsc; i++){
				wszystkie_miejsca[i] = new Miejsce("","",i+1, false);
				}
			}
	
		Film(String _tytul){
			tytul = _tytul;
			for(int i = 0; i < ilosc_miejsc; i++){
				wszystkie_miejsca[i] = new Miejsce("","",i+1, false);
				}			
		}
	
		void wyswietl_wszystkie_miejsca(){
			for(int i = 0; i < ilosc_miejsc; i++){
				wszystkie_miejsca[i].wypisz();
			}
			System.out.print("Wszystkich miejsc :" + ilosc_miejsc + "\n");
		}
		
		void wyswietl_wolne_miejsca(){
			int ilosc = 0;
			for(int i = 0; i < ilosc_miejsc; i++){
				if(wszystkie_miejsca[i].rezerwacja==false){
				wszystkie_miejsca[i].wypisz();
				ilosc++; 
				}
			}
			System.out.print("Wszystkich miejsc :" + ilosc + "\n");
		}
		void wyswietl_zarezerwowane_miejsca(){
			int ilosc = 0;
			for(int i = 0; i < ilosc_miejsc; i++){
				if(wszystkie_miejsca[i].rezerwacja==true){
				wszystkie_miejsca[i].wypisz();
				ilosc++;
				}
			}
			System.out.print("Wszystkich miejsc :" + ilosc + "\n");
		}
		
		void dodaj_rezerwacje(){
			System.out.print("Dodaj rezerwację:\n");
			wyswietl_wolne_miejsca();
			wybierz_miejsce();
			if(wybrane_miejsce > 0){
				wszystkie_miejsca[wybrane_miejsce-1].rezerwuj();
			}	
			System.out.print("Rezerwacja dodana.\n");
		}
		
		void wybierz_miejsce(){			
			System.out.print("Wybierz numer miejsca:\n");
			System.out.print("(0 by wrócić)\n");
			Scanner odczyt = new Scanner(System.in);
			wybrane_miejsce = odczyt.nextInt();
			if ((wybrane_miejsce < 0) || (wybrane_miejsce > ilosc_miejsc)){
				if (wybrane_miejsce != 0){
					wybrane_miejsce = 0;
					System.out.print("Nie ma takiego miejsca\n");
				}
			}	
		}
		
		void sprawdz_miejsce(){
			System.out.print("Sprawdz rezerwacje:\n");
			wybierz_miejsce();
			if(wybrane_miejsce != 0){
				wszystkie_miejsca[wybrane_miejsce-1].wypisz();
			}
			System.out.print("Wpisz cokolwiek i wciśnij enter by powrócić\n");
		}
		
		void anuluj_rezerwacje(){
			System.out.print("Anuluj rezerwację:\n");
			wyswietl_zarezerwowane_miejsca();
			wybierz_miejsce();
			if(wybrane_miejsce > 0){
				wszystkie_miejsca[wybrane_miejsce-1].anuluj_rezerwacje();
			}
			System.out.print("Rezerwacja anulowana.\n");
		}
		
		void wypisz(){
			System.out.print("Tytul: " + tytul + "\n");
		}
}
 import java.util.Scanner;

class Kino {
	private
		final int ilosc_filmow = 3;
		Film[] wszystkie_filmy = new Film[ilosc_filmow];
		int ilosc_dodanych_filmow,
			wybrany_film;
		
	public
		Kino(){
			wybrany_film = 0;
			ilosc_dodanych_filmow = 0;
			Film wszystkie_filmy[] = new Film[ilosc_filmow];
		}
	
		int zwroc_ilosc_dodanych_filmow(){
			return ilosc_dodanych_filmow;
		}
		
		void wyswietl_wszystkie_miejsca(){
	        for(int i = 0; i < ilosc_dodanych_filmow; i++){
	        	wszystkie_filmy[i].wypisz();
	        	wszystkie_filmy[i].wyswietl_wszystkie_miejsca();
	        }
	    }
	    
	    void wyswietl_wolne_miejsca(){
	    	for(int i = 0; i < ilosc_dodanych_filmow; i++){
	        	wszystkie_filmy[i].wypisz();
	        	wszystkie_filmy[i].wyswietl_wolne_miejsca();
	        }
	    }
	    
	    void wyswietl_zarezerwowane_miejsca(){
	    	for(int i = 0; i < ilosc_dodanych_filmow; i++){
	        	wszystkie_filmy[i].wypisz();
	        	wszystkie_filmy[i].wyswietl_zarezerwowane_miejsca();
	        }
	    }
	    
	    void dodaj_rezerwacje(){
	    	System.out.print("Dodaj rezerwacje:\n");      
	        wyswietl_wszystkie_filmy();
	        wybierz_film();	        
	        if(wybrany_film != 0)
	        {
	            wszystkie_filmy[wybrany_film-1].dodaj_rezerwacje();
	        }
	    }
	    
	    void anuluj_rezerwacje(){
	    	System.out.print("Anuluj rezerwacje:\n");      
	        wyswietl_wszystkie_filmy();
	        wybierz_film();	        
	        if(wybrany_film != 0)
	        {
	            wszystkie_filmy[wybrany_film-1].anuluj_rezerwacje();
	        }
	    }
	    
	    void sprawdz_miejsce(){
	    	System.out.print("Sprawdz rezerwacje:\n");      
	        wyswietl_wszystkie_filmy();
	        wybierz_film();	        
	        if(wybrany_film != 0)
	        {
	            wszystkie_filmy[wybrany_film-1].sprawdz_miejsce();
	        }
	    }
	    
		void dodaj_film(String _tytul){
			if(ilosc_dodanych_filmow<ilosc_filmow) 
		    {
		        wszystkie_filmy[ilosc_dodanych_filmow] = new Film(_tytul);
		        ilosc_dodanych_filmow++;
		        
		        System.out.print("Dodano film " + _tytul + "\n");
		    }
		    else
		    {
		    	System.out.print("Maksymalna liczba filmow dodana.\n");
		    }
		}
		
		void wybierz_film(){
		     wyswietl_wszystkie_filmy();
		     System.out.print("Wybierz numer filmu:\n");
		     System.out.print("(lub 0 by wyjść)\n");
		     Scanner odczyt = new Scanner(System.in);
			 wybrany_film = odczyt.nextInt();
			 if(wybrany_film < 0 || wybrany_film > ilosc_dodanych_filmow){
			    if(wybrany_film != 0)
			    {
			        wybrany_film = 0;
			        System.out.print("Nie ma takiego filmu");
			    }
			 }
		}
		 
		void wyswietl_wszystkie_filmy(){
			int tmpi;
		    for(int i = 0; i < ilosc_filmow; i++){
		    	tmpi = i + 1;
		    	System.out.print("Film nr."+ tmpi + " - ");
		    	wszystkie_filmy[i].wypisz();
		    }
		}
}
1

A może wewnątrz wybierz_film(); wołasz wyswietl_wszystkie_filmy(); ?

no właśnie ... i dodatkowo to samo robisz w metodzie sprawdz_miejsce();
więc 2 razy :-)

0

Wielkie dzięki, wracam do dalszego testowania :)

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