useDelimiter while循环没有正确循环

时间:2015-03-10 04:12:43

标签: java java.util.scanner

我有一个包含这样内容的文件:

  

123412

     

345634

     

124645

我想在每行中的逗号前面加上数字,然后将它们添加到我的arrayList中。为什么我的代码只能正确添加第一个数字(123),但是没有继续添加其余数字?

try {
            File input = new File(filename);
            in = new Scanner(input);
            in.useDelimiter(",");

            while(in.hasNextLine()) {
                someArrayList.add(Integer.parseInt(in.next()));
            }

3 个答案:

答案 0 :(得分:0)

如果想要逗号之前的数字,那么只需将整行分开即可。没有必要使用分隔符。

Scanner input = new Scanner(new File(filename));
while(input.hasNextLine()) {
    String firstThreeDigits = input.nextLine().split(",")[0]
    someArrayList.add(Integer.parseInt(firstThreeDigits));
} 

答案 1 :(得分:0)

这里有两个错误:

  • in.hasNextLine() - 这是检查此扫描仪输入中是否有另一行
  • in.useDelimiter(","); - 如果您不断致电
  • ,使用此分隔符只能使用逗号

假设您的输入文件是逐行的,您可以将上述两个内容更改为:

File input = new File(filename);
in = new Scanner(input);
in.useDelimiter(",|\n");

while (in.hasNext()) {
    someArrayList.add(Integer.parseInt(in.next()));
}

我认为更好的方法是使用readLine,然后使用String.split生成的行。

答案 2 :(得分:0)

我在这里使用nextLine来使用该行,然后使用正则表达式进行拆分,

try {
        File input = new File(filename);
        in = new Scanner(input);
        while(in.hasNextLine()) {
         someArrayList.add(
       Integer.parseInt(in.nextLine().split(",")[0].replace("\\s+", "")));
  }

取线,用“,”分割,得到第一个元素,并用空格替换所有空格