Podstawy w Javie

Podstawy w Javie
C9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:31
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

J1
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 2 lata
  • Postów:224
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.


edytowany 1x, ostatnio: Jonki1997
R1
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:208
0

szukajka niedziała? Tutaj

GE
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:EU/PL/KRK/TRZ
  • Postów:15
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!

C9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:31
0

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

GE
Powodzenia! Pamiętaj, że kluczem do sukcesu jest rozbicie większego problemu na mniejsze. W tym wypadku osobnym zagadnieniem jest odczyt treści pliku, a osobnym analiza poszczególnych linii przez program. Jeśli przy czymś utkniesz na dłużej - pokaż kawałek kodu, szybciej możesz się spodziewać jakichś konstruktywnych uwag.
C9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:31
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??

GE
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:EU/PL/KRK/TRZ
  • Postów:15
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

Kopiuj
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:

Kopiuj
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.

C9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:31
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.

  • fsd.png (108 KB) - ściągnięć: 186
GE
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:EU/PL/KRK/TRZ
  • Postów:15
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 ;)

edytowany 1x, ostatnio: genobis

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.