为什么我的程序在没有相应打印语句的情况下打印值?
Why is my program printing values without a corresponding print statement?
我想弄清楚如何从 java 中的文件中读取一系列值。该文件有多行,每行中的值以逗号分隔。在编写测试程序只是为了弄清楚如何将定界符与扫描仪一起使用时,我 运行 遇到了我的程序从文件打印值的问题。我不知道程序从哪里获取打印所有值的指令。
这是我的 public static void main 中的内容(在 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());
我正在读取的文件是 test.txt:
4,5,6
7
8,9,10
这是正在打印的内容:
line 18 4
line 19 5
line 20 6
7
8
line 21 9
您还需要将换行符添加到分隔符模式中:
testReader.useDelimiter(",|(\r\n)|(\n)");
您的扫描仪没有将换行符视为分隔符。这就是 scanner.next()
返回换行符的原因
解决方案是将扫描仪配置为使用 space 和逗号作为分隔符:
testReader.useDelimiter("(,|\s)");
有关 "(,|\s)"
等模式的更多信息,请参阅 here。
我想弄清楚如何从 java 中的文件中读取一系列值。该文件有多行,每行中的值以逗号分隔。在编写测试程序只是为了弄清楚如何将定界符与扫描仪一起使用时,我 运行 遇到了我的程序从文件打印值的问题。我不知道程序从哪里获取打印所有值的指令。
这是我的 public static void main 中的内容(在 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());
我正在读取的文件是 test.txt:
4,5,6
7
8,9,10
这是正在打印的内容:
line 18 4
line 19 5
line 20 6
7
8
line 21 9
您还需要将换行符添加到分隔符模式中:
testReader.useDelimiter(",|(\r\n)|(\n)");
您的扫描仪没有将换行符视为分隔符。这就是 scanner.next()
解决方案是将扫描仪配置为使用 space 和逗号作为分隔符:
testReader.useDelimiter("(,|\s)");
有关 "(,|\s)"
等模式的更多信息,请参阅 here。