Pętla do while odmawia współpracy

0

Witam, mam problem z funkcją do{}while(). Nie wiem czemu ten błąd mi tam wyskoczył mimo, ze kod wcześniej działał i był caly czas w komentarzu abym go nie ruszył. Błąd jaki wyskakuje to:

Podana osoba zostanie przypisana do indeksu nr: 0

Podaj imię oraz nazwisko:
dfsf
MENU
1- Dodaj osobę.
2- Usuń osobę.
3- Zmień osobę.
4- Wypisz tablicę na ekranie.
5- Zapisz osoby do pliku.
6- Wczytaj osoby z pliku.
7- Zakoncz program.
Wybierz nr dzialania: 
Exception in thread "main" java.util.NoSuchElementException
	at java.util.Scanner.throwFor(Unknown Source)
	at java.util.Scanner.next(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)
	at java.util.Scanner.nextInt(Unknown Source)
	at Pierwsza_klasa.menu(Pierwsza_klasa.java:58)
	at Pierwsza_klasa.main(Pierwsza_klasa.java:8) 

tutaj kod programu

import java.util.Scanner;
public class Pierwsza_klasa {	
	public static void main(String[] args){		
String baza[] = new String[15];
	for(int i=0;i<14;i++){
		baza[i]="";			
		}	
	menu(baza);	
	} 
	
	public static int wolne_miejsce(String[] baza){ //sprwadza ktory indeks nie ma przypisanej wartosci
		int i=0;
		int wolne=0;
		
		for(i=0;i<10;){
			if(baza[i]==("")){
				wolne=i;
				i+=10;
			};
		i++;
		}	
	return wolne;
       }	
	
	public static int dodaj_osobe(int wolne_miejsce, String[] baza){		
		System.out.println("Podana osoba zostanie przypisana do indeksu nr: "+wolne_miejsce);
		System.out.println("\nPodaj imię oraz nazwisko:");
		Scanner skantek = new Scanner(System.in);
		baza[wolne_miejsce] = skantek.next();
		skantek.close();
		return 0;
	}
	
	public static void menu(String[] baza){		
		
		dodaj_osobe( wolne_miejsce(baza), baza);
		
		int wybor=0;
		do{
		System.out.println("MENU"
				+ "\n1- Dodaj osobę."
				+ "\n2- Usuń osobę."
				+ "\n7- Zakoncz program."
				+ "\nWybierz nr dzialania: ");
		
		Scanner odczyt = new Scanner(System.in);
		wybor = odczyt.nextInt();
		//wybor = 7;	
		
		switch(wybor){
		
			case 1:{				
				//funkcja dodajaca osobę
			//	dodaj_osobe(wolne_miejsce(baza), baza);
				
			//	wolne_miejsce(baza);
				
			//	dodaj_osobe(miejsce, baza);
				
			}
			
			case 2:{				
				// usun osobe
			}		
		
		};
		}while(wybor!=7); ///////////// tutaj błąd	
	}  	
} 

Męcze sie z tym ponad 1h szukając rozwiązania ale nic to nie zmienia ;/ Obstawiam, ze jest to związane z odczytem z klawiatury.

1

Zakomentuj skantek.close();

0

Działa, dzięki wielkie :) A mógłbyś mi powiedzieć czemu tak się działo? Bo jest to dla mnie trochę niezrozumiałe.

1

Podłączasz skaner do standardowego wejścia - zamykając go zamykasz także standardowe wejście co powoduje NoSuchElementExceptio przy następnej próbie powołania się nań. Skaner się zamyka, kiedy podłączasz go np. do pliku, ale raczej nigdy, kiedy podłączasz do standardowego wejścia.

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