Zapis treści z pliku do zmiennej String

0
Scanner scanner = new Scanner(new File("D:\\pliki java\\plik.txt"));
		while(scanner.hasNext())
		{
			String s = scanner.next();
			
		}
		System.out.println(s);
		scanner.close(); 

Dlaczego potem komendą System.out.println(s); nie chcę mi odczytać tej zmiennej s ? Tylko w pętli while mogę.

`dodanie znaczników ``` - @furious programming

0
Scanner scanner = new Scanner(new File("D:\\pliki java\\plik.txt"));
String s = null;        
while(scanner.hasNext())
        {
            s = scanner.next();
 
        }
        System.out.println(s);
        scanner.close(); 
0

W przypadku javy najpierw taką zmienną trzeba ustawić na null aby móc potem ją odczytać ? zawsze tak jest w javie ?

0

Chodzi o to, że Twoja zmienna s to zmienna lokalna(zadeklarowana w pętli) i ma zakres widoczności tylko w pętli. Dlatego poza pętlą jest niewidoczna

0

ale nawet jeśli zmienna s zadeklaruję wcześniej, ale jej nie zdefiniuje to program się sypie:

Scanner scanner = new Scanner(new File("D:\\pliki java\\plik.txt"));
String s;        
while(scanner.hasNext())
        {
            s = scanner.next();
 
        }
        System.out.println(s);
        scanner.close();  

Ps.Gdzie tutaj jest znacznik kodu źródłowego javy ?

0

Lista rozwijana Kolorowanie składni, trudno nie zauważyć.
Program się sypie? Czy kompilator mówi, że zmienna s może być niezainicjowana? Nabierz odruchu, że każda zmienna jest inicjowana.

0

w c++ jak zadeklaruje wcześniej zmienna i w pętli while do niej coś przypisze to normalnie po za pętlą while mogę ją wypisać. W javie tak nie ma. Dobrze mówię ? Bo przecież te operacje wykonuje w mainie wszystkie.

1

W Javie wymagana jest (dla Twojego bezpieczeństwa) inicjalizacja (nadanie wartości) zmiennej. Nie wypiszesz żadnych śmieci z pamięci.
Nie ma gwarancji, że kod pętli while wykona się choć raz i nastąpi jakieś przypisanie.

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