Zliczanie ilości wpisanych słów

Odpowiedz Nowy wątek
2011-08-12 08:10
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.

Pozostało 580 znaków

2011-08-12 08:15
0

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

Pozostało 580 znaków

2011-08-12 08:18
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.");
    }
}
 

Pozostało 580 znaków

2011-08-12 08:21
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...

Pozostało 580 znaków

2011-08-12 08:23
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.

Pozostało 580 znaków

2011-08-12 08:30

Warunek odwróć w pętli.


"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-08-12 08:31
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)

edytowany 1x, ostatnio: remigio, 2011-08-12 08:33

Pozostało 580 znaków

2011-08-12 08:36
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.");
    }
}
 
edytowany 1x, ostatnio: michal_2, 2011-08-12 08:39

Pozostało 580 znaków

2011-08-12 10:52
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?


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2011-08-12 10:52

Pozostało 580 znaków

2011-08-12 20:30
0

Na pewno działa i nie wywala przypadkiem NPE?

Pozostało 580 znaków

2011-08-13 14:07
0
krwq napisał(a)

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?

Sprawdziłem, działa dobrze. Jak się wpisze " " to nie zlicza nic.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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