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?

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.

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