Java - problem z wczytywaniem(Scanner)

2011-09-24 14:39
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.

edytowany 2x, ostatnio: Patryk1992bdg, 2011-09-24 15:10

Pozostało 580 znaków

2011-09-24 15:31
bo
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.

A nie jakieś ctrl+d? - Shalom 2011-09-24 23:59

Pozostało 580 znaków

2011-09-24 15:36
0

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

Pozostało 580 znaków

2011-09-24 15:42
0

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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-09-24 15:44
bo
0

W Stringach też.

Pozostało 580 znaków

2011-09-24 15:46
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?

Pozostało 580 znaków

2011-09-24 15:53
szypxx
0

FileWriter, FileReader. ;)

Pozostało 580 znaków

2011-09-24 16:15
0

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

edytowany 1x, ostatnio: Patryk1992bdg, 2011-09-24 16:23

Pozostało 580 znaków

2011-09-24 16:45
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.

edytowany 2x, ostatnio: iooi, 2011-09-24 16:46

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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