Próbuję wczytać poniższy plik składający się z 16 powtarzających czterolinijkowych się struktur:
Arka Augustów
AUG
Stadion Augustowski
01 01 01 01 2 6 8 8
Błyskawica Białystok
BIA
Stadion Miejski w Białymstoku
02 02 02 02 2 6 8 8
Czarni Cieszanów
CIE
Arena Cieszanów
03 03 03 03 2 6 8 8
Diament Drohiczyn
DRO
Arena Drohiczyn
04 04 04 04 2 6 5 5
Galicja Grajewo
GRA
Stadion Miejski w Grajewie
05 05 05 05 2 6 8 8
Hetman Hrubieszów
HRU
Stadion im. Witolda Pileckiego
06 06 06 06 2 6 8 9
Jutrzenka Jedwabne
JED
MOSiR w Jedwabnem
07 07 07 07 2 6 1 8
Korona Kraśnik
KRA
Stadion Miejski w Kraśniku
08 08 08 08 2 6 2 8
Naprzód Nisko
NIS
MOSiR w Nisku
09 09 09 09 2 6 8 3
Olimpia Oleszyce
OLE
Arena Oleszyce
10 10 10 10 3 6 4 8
Pogoń Przemyśl
PRZ
Stadion im. Łukasza Cieplińskiego
11 11 11 11 3 6 9 8
Ruch Rudnik
RUD
Stadion Miejski w Rudniku
12 12 12 12 3 6 2 8
Sokół Sokółka
SOK
Stadion Miejski w Sokółce
13 13 13 13 3 6 3 8
Tłoki Tarnobrzeg
TAR
Stadion im. Zbigniewa Herberta
14 14 14 14 3 7 4 9
Unia Ulanów
ULA
Stadion w Ulanowie
15 15 15 15 3 9 4 1
Zawisza Zamość
ZAM
Stadion im. Jana Łożańskiego
16 16 16 16 1 6 4 2
Udało mi się odczytać dane poprawnie za pomocą takiego kodu z użyciem licznika:
Scanner scanner = new Scanner(file);
String name, abbreriation, stadium, logo, turf, kitHome, kitAway;
int amountPass, amountCross, amountShoot, strategy;
int counter = 0;
while (scanner.hasNextLine()) {
counter++;
name = scanner.nextLine();
// System.out.println(name);
abbreriation = scanner.nextLine();
// System.out.println(abbreriation);
stadium = scanner.nextLine();
// System.out.println(stadium);
logo = scanner.next();
// System.out.println(logo);
turf = scanner.next();
// System.out.println(turf);
kitHome = scanner.next();
// System.out.println(kitHome);
kitAway = scanner.next();
// System.out.println(kitAway);
amountPass = scanner.nextInt();
// System.out.println(amountPass);
amountCross = scanner.nextInt();
// System.out.println(amountCross);
amountShoot = scanner.nextInt();
// System.out.println(amountShoot);
strategy = scanner.nextInt();
// System.out.println(strategy);
if (count < 16)
scanner.nextLine();
}
Jeżeli zakomentuję linię 26 zostaje wyrzucony wyjątek, że próbuję dostać się o linię za daleko...
java.util.NoSuchElementException: No line found
W jaki sposób mogę to zrobić elegancko, tak aby program bez sprawdzania ilości danych faktycznie czytał je tylko do końca pliku? Zmienić rozmieszenie danych w pliku tekstowym, skorzystać z innej klasy, czy może jednak lekko zmodyfikować moje rozwiązanie?