Zliczanie liter i spacji w linijce wczytanej z konsoli dla kilku takich linijek.

0

Mam zadanie "rozgrzewkowe" z automatów.

Napisać program, który dla każdego wierszu pobranego ze standardowego
wejścia wypisuje na standardowym wyjściu liczbę znaków w wierszu (bez
znaku końca wiersza), spację i wczytane wiersz.

Umiem zrobić tak aby wczytywało tekst i odpowiednio go zliczało. Umiem wczytać słowo i zaraz je wpisać wraz z liczbą znaków ze spacjami, umiem to zrobić wielokrotnie. Umiem wczytać n linijek, gdzie n jest liczbą wcześniej ustaloną i po zakończeniu wczytania kolejno wyświetlić słowa wraz z liczbą znaków które były w danej linijce.

Mam jednak problem aby wczytać n takich linijek, zakończyć wczytywanie i wyświetlić wynik.

Gdy używałam warunku że linijka, musi być pusta czyli text==null pobiera każdą linijkę dopóki nie przepełni tablicy i program się wysypie. ctrl + d nie działa a to znak końca pliku z tego co się orientuję, jest jakiś znak końca wczytywania i jak go dać do warunku while?

import java.util.*;

public class wczytuje{


public static void main(String[] args)
{	
	String[] table1 = new String[5];
	int i=0,u;
	String text;
do{
	Scanner input = new Scanner(System.in);
	text = input.nextLine();
	table1[i]=(text+" "+text.length());

	i++;

	}while(text!=null);
	for(u=0;u<i;u++)
	{
		System.out.println(table1[u]);
	
	}
	
	
}

Kiedy z kolei próbuje hasNext tzn text.hasNext() w while za radą znajomego, to uzyskuje taki o to błąd:

 wczytuje.java:21: error: cannot find symbol
        }while(text.hasNext());
                   ^
  symbol:   method hasNext()
  location: variable text of type String
1 error
0

Troche przekombinowales. Ja bym proponowal tak:

        Scanner input = new Scanner(System.in);
        String line = null;
        do {
            line = input.nextLine();
            System.out.println(line + " " + line.length());

        } while ( !line.isEmpty() );
        input.close();

text==null nie zadzialalo, bo nextLine() zwrocilo pustego stringa a nie nulla.

1

Ależ kombinujecie...

        new BufferedReader(new InputStreamReader(System.in))
                .lines()
                .map(line -> String.format("%d %s",line.length(),line))
                .forEach(System.out::println);

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