wczytywanie danych z pliku z białymi znakami

0

czy "enter" jest traktowany przez Javę jako biały znak?
w programie mam wczytać cztery dane liczbowe z pliku i te dane mogą być rozdzielone białymi znakami. wydawało mi się, że najlepszym sposobem będzie wczytanie najpierw wszystkiego co się w pliku znajduje, a następnie sprawdzenie czy liczba danych jest odpowiednia w ten sposób:

Scanner scan = new Scanner (new File(fname));
String dane = "";
while (scan.hasNextLine()) dane = dane + scan.nextLine();
StringTokenizer st = new StringTokenizer (dane);
if (st.countTokens() != 4) wynik = "***";

To powoduje jednak problem, jeżeli dane nie są zapisane w jednej linii (np. 1 2 3 4) tylko w liniach kolejnych:
1
2
3
4
bo wtedy mój sposób wczytywania powoduje, że zamiast czterech danych mam jedną o wartości 1234

pomyślałem o takiej modyfikacji kodu:

Scanner scan = new Scanner (new File(fname));
String dane = "";
while (scan.hasNextLine()) dane = dane + scan.nextLine() + " ";
StringTokenizer st = new StringTokenizer (dane);
if (st.countTokens() != 4) wynik = "***";

ale nie wiem czy to ma sens

0

To rozwiązanie ma sens.
Jaki jest związek pytania

czy "enter" jest traktowany przez Javę jako biały znak?
z Twoim problemem?

0

jeżeli "enter" nie jest białym znakiem, to modyfikacja kodu nie ma sensu, bo wtedy dane wprowadzane w kolejnych wierszach są nieprawidłowe w kontekscie treści zadania

1

Powinieneś spytać prowadzącego, co on uważa za białe znaki. Ogólna definicja jest taka, że biały znak nie ma reprezentacji graficznej => "enter" jest białym znakiem. Ta definicja nie ma żadnego związku z językiem programowania. Możesz odczytywać liczby tak (zmienna daneOk jest po to, by nie czytać ogromnej ilośc nadmiarowych danych):

boolean daneOk = truel
List <Integer> lista = new ArrayList();
while (scan.hasNextInt()) {
    lista.add(scan.nextInt());
    if(lista.size() > 4){
        daneOk == false;
        break;
    }
}

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