Java - problem z wczytywaniem(Scanner)

Java - problem z wczytywaniem(Scanner)
P1
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
 
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
        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.

P1
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

W Stringach też.

P1
  • Rejestracja: dni
  • Ostatnio: dni
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?

  • Rejestracja: dni
  • Ostatnio: dni
0

FileWriter, FileReader. ;)

P1
  • Rejestracja: dni
  • Ostatnio: dni
0

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

iooi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 573
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.