Java 读取文件时出现无限循环,String.split()无法正常工作

Java 读取文件时出现无限循环,String.split()无法正常工作,java,string,loops,file-io,split,Java,String,Loops,File Io,Split,我有一个文本文件admin.dat,如下所示: blackranger|sdasdasdasd23123|1000 blueranger|sdasdasdasdwhhh22|1000 brownranger|lppsadospd123|1000 我试图读取每一行,使用|作为分隔符,并将每一部分输出到控制台 代码: 实际结果: 为什么我会得到一个无限循环,它永远打印出一个b 而不是 String foo = "abc|123|a213"; String[] bar = foo.split("

我有一个文本文件admin.dat,如下所示:

blackranger|sdasdasdasd23123|1000
blueranger|sdasdasdasdwhhh22|1000
brownranger|lppsadospd123|1000
我试图读取每一行,使用|作为分隔符,并将每一部分输出到控制台

代码:

实际结果:

为什么我会得到一个无限循环,它永远打印出一个b

而不是

 String foo = "abc|123|a213";
 String[] bar = foo.split("|");

您从未在while循环中读取文件读取器,因此whilefilereader.hasNextLine将始终为true,循环永远不会结束是有意义的。令我惊讶的是,看起来您的代码确实从循环中的fileReader中读取,但注释掉了它。为什么?


解决方案:不要这样做。确保更改while循环内的测试条件,否则while循环将永远不会结束。

您应该转义字符|,因为它在正则表达式中有特殊意义

但首先,为foo分配从文件中读取的值,而不是硬编码:

String foo = filereader.nextLine();

不,但我100%认为数组值的原因是,|应该在更新答案后转义,它将正常工作。在那之前不会。
a // infinite loop
b


a
b 


a
b


a
b



a
b
String foo = filereader.nextLine();
String[] bar = foo.split("\\|");
 String foo = "abc|123|a213";
 String[] bar = foo.split("|");
 foo.split("\\|");
String foo = filereader.nextLine();