Java - problem z wczytywaniem(Scanner)

0

Witam, mam taki oto problem. Zacząłem ogarniać Javę, dotarłem teraz do klasy Scanner i mam problem z jej metodami. Mianowicie. Chcę zrobić program który wczytuje slowa do czasu zakończenia ich wpisywania, chciałem użyć do tego metody .hasNext . Oto kod i prosiłbym o wskazanie błędów:

 
import java.util.Scanner;


public class Glown {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
		
	{
		Scanner skan = new Scanner(System.in);
		StringBuilder cosik = new StringBuilder();
		
		System.out.print("Podawaj wyrazy: ");
		
		while(skan.hasNext())
		{
			cosik.append(skan.next());
			cosik.append(' ');
			
		}
		
		skan.close();
		String calosc = cosik.toString();
		System.out.print(calosc);
		
		
	}
		
		
		
	}

		
		
		

Chciałbym aby po zakończeniu wpisywania program "poszedł" dalej, a nie się "zatrzymał" tak jak to ma miejsce w przypadku tego kodu. Z góry dzięki za pomoc.

0

Podpowiedz użytkownikowi, że wprowadzanie danych ma zakończyć przez Ctrl-C, albo użyj klasy Console:

        Console con=System.console();
        StringBuilder txt=new StringBuilder("");
        System.out.println("Napisz cokolwiek a potem nacisnij ENTER - pusty wiersz konczy wczytywanie\n");
        while(true)
        {
            String line=con.readLine("");
            if(line.isEmpty())
            {
                break;
            }
            txt.append(line+"\n");
        }
        con.printf("%s\n",txt);

Powyższego kodu nie uruchomisz z IDE (Eclipse, NetBeans), one tworzą własną konsolę i System.console() zwraca null.

0

OK, czyli w takim razie hasNext() znajduje zastosowanie tylko w plikach?

0

Nie. hasNext() jest po prostu niepraktyczne, jeżeli wczytujemy dane od użytkownika przez klawiaturę.

0

W Stringach też.

0

Ok, dziękuję Wam bardzo. Mam jeszcze jedno pytanie, trochę z innej beczki. Czy klasy PrintWriter i Scanner są wystarczające do operacji na plikach tekstowych? Czy może powinienem zainteresować się także czymś innym?

0

FileWriter, FileReader. ;)

0

Oki, a czy korzystając teraz jedynie ze scannera i printwritera coś tracę ?

0

Nie, bo to jak najbardziej odpowiednie klasy do obsługi tekstowego, formatowanego wejścia/wyjścia. Java ma jednak dosyć bogate API IO, a prędzej czy później i tak będziesz musiał użyć czegoś innego dla innego problemu.

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