Próbuję dowiedzieć się, jak odczytać serię wartości z pliku w Javie. Plik ma wiele wierszy, a wartości są oddzielone przecinkami w każdym wierszu. Pisząc program testowy, aby dowiedzieć się, jak używać separatora w skanerze, napotkałem problem z wyświetlaniem przez program wartości z pliku. Nie wiem, skąd program pobiera instrukcje wypisywania wszystkich wartości.

Oto, co jest w mojej publicznej statycznej void main (wewnątrz pętli try):

File f1 = new File("Data1.txt");
File test = new File("test.txt");
Scanner reader = new Scanner(f1);
Scanner testReader = new Scanner(test);
testReader.useDelimiter(",");

System.out.println("line 18 "+testReader.nextInt());
System.out.println("line 19 "+testReader.nextInt());
System.out.println("line 20 "+testReader.next());
System.out.println("line 21 "+testReader.nextInt());

Plik z którego czytam to test.txt:

4,5,6 
7 
8,9,10

A oto, co jest drukowane:

line 18 4
line 19 5
line 20 6
7
8
line 21 9
0
Ganlas 5 marzec 2020, 20:57

2 odpowiedzi

Najlepsza odpowiedź

Twój skaner nie widzi znaków wysuwu wiersza jako ograniczników. To jest powód, dla którego znaki wysuwu wiersza są zwracane przez scanner.next()

Rozwiązaniem jest skonfigurowanie skanera tak, aby zawierał spację i przecinek jako separatory:

testReader.useDelimiter("(,|\\s)");

Więcej informacji na temat można znaleźć tutaj wzorce, takie jak "(,|\\s)".

1
s.fuhrm 5 marzec 2020, 18:03

Musisz również dodać znaki nowego wiersza do wzorca separatora:

testReader.useDelimiter(",|(\r\n)|(\n)");
1
Eng.Fouad 5 marzec 2020, 18:02