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, botów: 0