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
2 odpowiedzi
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)"
.
Musisz również dodać znaki nowego wiersza do wzorca separatora:
testReader.useDelimiter(",|(\r\n)|(\n)");
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].