Zliczanie ilości wpisanych słów

0

Mam taki program:

public class Str {
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String liniaTekstu = "";
        liniaTekstu = br.readLine();
        int ilosc = 0;
        String s[];

        do
        {
            s = liniaTekstu.split(" ");
            ilosc += s.length;
            liniaTekstu = br.readLine();
        }
        while (liniaTekstu != "");

        System.out.println("Wpisano " + s.length + " słów.");
    }
}

Problem polega na tym, że nie działa prawidłowo. Powinien zakończyć działanie po wpisaniu pustego wiersza. Jednak tak się nie dzieje. Nie wiem czemu. Proszę o pomoc.

0

To jest java! Operator != porównuje referencje a nie wartości. Musisz użyć .equals()

0

Poprawiłem, dzięki, ale nie wiem czemu, ale zlicza zawsze 1 wyraz, czemu?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Str {
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String liniaTekstu = "";
        liniaTekstu = br.readLine();
        int ilosc = 0;
        String s[];

        do
        {
            s = liniaTekstu.split(" ");
            ilosc += s.length;
            liniaTekstu = br.readLine();
        }
        while (liniaTekstu.equals(""));

        System.out.println("Wpisano " + s.length + " słów.");
    }
}
0

Żartujesz sobie? Ukradli ci debugger? o_O MYŚl! Patrz co wypisujesz:

System.out.println("Wpisano " + s.length + " słów.");

Wypisujesz s.length() a nie ilosc...

0

Aha, faktycznie, ale nie wiem czemu, ale zlicza tylko 1 linijkę, dalej już nie:

111111 2222 3 4 5 6 7 7 54 3 4 5 4
2 3 4 5 3 3
Wpisano 13 słów.
0

Warunek odwróć w pętli.

0

wywal to czytanie readLine przed pętlą "do" jest niepotrzebne(równocześnie będziesz musiał przenieść czytanie linii w pętli do przed split'a)

0

Wielkie dzięki, już działa :)
PS.

Oto działający program:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Str {
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String liniaTekstu = "";
        liniaTekstu = br.readLine();
        int ilosc = 0;
        String s[];

        while (!liniaTekstu.equals(""))
        {
            s = liniaTekstu.split(" ");
            ilosc += s.length;
            liniaTekstu = br.readLine();
        }

        System.out.println("Wpisano " + ilosc + " słów.");
    }
}
0

jak wpiszesz od razu pusty wiersz to zwróci Ci 1 czy 0? Jak zrobisz gdzieś 2 spacje z rzędu to zwróci Ci dobry wynik?

0

Na pewno działa i nie wywala przypadkiem NPE?

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