Java 循环未正确循环时使用分隔符

Java 循环未正确循环时使用分隔符,java,java.util.scanner,Java,Java.util.scanner,我有一个包含以下内容的文件: 123412 345634 124645 我只想得到每行逗号前的数字,并将它们添加到我的arrayList中。为什么我的代码只正确地添加了第一个数字(123),而没有继续添加其余的数字 try { File input = new File(filename); in = new Scanner(input); in.useDelimiter(","); while(i

我有一个包含以下内容的文件:

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

如果你只想在逗号前加上数字,那就把整行分开。这不需要使用分隔符

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

这里有两个错误:

  • 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
结果行。

这里我使用
nextLine
来使用该行,然后使用regex

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

取行,使用“,”拆分,得到第一个元素,并将所有空白替换为零

@AlexandreLavoie:他们已经在使用
.next()
,这是副本中规定的。当我以这种方式尝试时,我得到:java.lang.NumberFormatException:用于输入字符串:“412”。412后面有一个新行,最后一个引号在下一行。@AlldaRage您可以将其更改为
\\s+
而不是
\n
或调用
String\trim()
next()
中的每个值执行此操作!您能告诉我为什么split语句后面有[0]吗?另外,对于逗号后的数字,您将如何执行此操作?
split
返回一个字符串数组<代码>[0]
是第一个元素。如果需要第二个元素,则必须将该行存储到临时字符串中,然后将其拆分,并通过
[1]
索引到其中。