Podstawy w Javie

0

Witam. Mam pewien problem, mianowicie nie mam zielonego pojecia jak wczytac dane z pliku pod odpowiednie zmienne. Z calego zdania mam zrobic jakby 4 zmienne.
Przyklad:
w pliku:Jan Kowalski 17 20.8
imie=Jan
nazwisko=Kowalski
wiek=17
skutecznosc 20.8
Ktos wie jak to zrobic?? Z gory dzieki za pomoc :P

0

Najlepiej żebyś sam się pomęczył. Wtedy będzie największa satysfakcja. Ale nakieruję Ciebie. Jeśli tekst w pliku wygląda tak jak podałeś, czyli między wyrazami i '=' nie ma żadnych odstępów, to jedyna opcja pobierać linie, obcinać zmienną typu string metodą substring() i może jakimś licznikiem ładować do odpowiednich zmiennych. A gdybyś np. miał tam odstępy i wtedy nie musiałbyś obcinać tego tekstu, to może załadować plik do obiektu typu Scanner i wtedy czytać co odstęp i określić co który raz ma ładować tekst do zmiennej. To na szybko coś na yt. . Przerób sobie to z filmiku i będzie OK.

0

szukajka niedziała? Tutaj

0

Kilka luźnych uwag ode mnie:

  • Czytaj plik linia po linii (poszukaj, jest duuużo przykładów). Jeżeli zupełnie nie wiesz - coś można podpowiedzieć, ale warto najpierw spróbować zdobyć wiedzę samemu.
  • Pomoże Ci metoda split klasy String - rozbije wiersz według spacji i wpakuje wartości do tablicy. Wtedy już jesteś właściwie w domu - możesz przypisać wartości tablicy do zmiennych lub zrobić z nimi cokolwiek innego.
  • Jeżeli potrzebujesz zrobić z ciągu znaków liczbę, to każda podklasa Number ma jakąś metodę parse.

Powodzenia!

0

Dziekuje za wszelkie uwagi i rady. Wiadomo, jesli do czegos dojdzie sie samemu to dluzej mozna zapamietac jak to sie zrobilo :P

0

Niestety nadal nie wiem jak zrobic to zadanie. Jesli chodzi o substring to z tego co przeczytalem wczytuje ona litery jedna po drugiej a nie wszystkie na raz. Czytalem tez o fukncji StringTokenizer ale rowniez nie wiem jak sie tym poslugiwac. Zdanie jest juz wczytane ale dalsze pytanie, jak je podzielic i zapisac pod konkretne zmienne??

1

@chrupek97: Tak jak pisałem, w tym wypadku split to najprostszy sposób, żeby zrobić to, czego potrzebujesz :) StringTokenizer to starsza klasa, umiarkowanie wygodna w obsłudze, w dodatku jej używanie w nowym kodzie jest obecnie odradzane, z kolei substring pozwala wyciąć fragmenty ciągu znaków, pod warunkiem, że wiesz o jaki fragment Ci chodzi (czyli znasz indeks początkowy/końcowy) ;) więc w Twoim przypadku nie zda się na nic.

Poniżej króciutki przykład użycia split

final String line="Jan Kowalski 17 20.8";
final String[] data=line.split("\\s+");
for(int i=0; i< data.length; i++) {
    System.out.println(String.format("data[%d]: %s", i, data[i]));
} 

Da to następujący wynik:

data[0]: Jan
data[1]: Kowalski
data[2]: 17
data[3]: 20.8

Uwaga: użycie wywołania line.split(" ") też by zadziałało w tym konkretnym przypadku, ale użycie wyrażenia regularnego \s+ sprawia, że jeśli spacji będzie więcej (lub byłby to jakiś inny rodzaj białego znaku), program nadal zadziała prawidłowo.

Działaj i pytaj w razie czego.

0

Niestety nadal nie moge skonczyc tego programu. Ma on na celu pobrac dane osobowe z pliku i wypisac osoby ktorych dlugosc imienia jest wieksza od 3, nazwisko konczy sie na "ski" oraz osoba ta ma najwieksza skutecznosc. W momencie gdy chce skompilowac plik przy ifie zaznaczonym na czerwono pojawia sie zarowka z ostrzezeniem i komunikatem Invert if i Flip operands of the binary operator.

0

Ciężko patrząc na ten kod powiedzieć, co ten program właściwie próbuje zrobić (brzmi to trochę inaczej od tego, co pisałeś wcześniej). Poustawiaj breakpointy, użyj debuggera i sprawdź co dokładnie robi Twój program. Kto wie, może sam się zdziwisz ;)

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