Почему в моей программе печатаются значения без соответствующего оператора печати? - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь понять, как прочитать последовательность значений из файла в java. Файл имеет несколько строк, а значения разделены запятыми в каждой строке. При написании тестовой программы, чтобы выяснить, как использовать разделитель со Сканером, я столкнулся с проблемой печати значений из моей программы из файла. Я не знаю, откуда программа получает инструкции для печати всех значений.

Это то, что находится в моем publi c stati c void main (внутри попытки l oop):

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());

Файл, из которого я читаю, является test.txt:

4,5,6 
7 
8,9,10

И вот что печатается:

line 18 4
line 19 5
line 20 6
7
8
line 21 9

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Ваш сканер не видит символы перевода строки как разделители. По этой причине символы перевода строки возвращаются scanner.next()

. Решение состоит в том, чтобы настроить сканер так, чтобы в качестве разделителей использовались пробел и запятая:

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

См. здесь для получения дополнительной информации о таких шаблонах, как "(,|\\s)".

1 голос
/ 05 марта 2020

Вам также необходимо добавить символы новой строки в шаблон разделителя:

testReader.useDelimiter(",|(\r\n)|(\n)");
...