Java useDelimiter和文件读取
我对定界符有问题 在主管道内,我有Java useDelimiter和文件读取,java,Java,我对定界符有问题 在主管道内,我有 Scanner in= new Scanner(new File("num.txt")); in.useDelimiter("\\D"); while(in.hasNext()){ System.out.print(in.next()); } 其中num.txt具有 2,3,4 6,3,2 1,2,3 输出是234632123,但当我将“in.next()”更改为“in.nextInt()”时,我得
Scanner in= new Scanner(new File("num.txt"));
in.useDelimiter("\\D");
while(in.hasNext()){
System.out.print(in.next());
}
其中num.txt具有
2,3,4
6,3,2
1,2,3
输出是234632123,但当我将“in.next()”更改为“in.nextInt()”时,我得到
如果in.next()输出234632123,那么in.nextInt()为什么不工作
编辑
如果我使用
in.useDelimiter("\\D+")
而不是
in.useDelimiter("\\D")
然后nextInt()将正确扫描该数字
Scanner in= new Scanner(new File("num.txt"));
in.useDelimiter("\\D+");
while(in.hasNext()){
System.out.print(in.nextInt());
}
但是我仍然不知道为什么第一个版本不起作用您需要更改它以检查下一个令牌中是否有
int
,然后调用Scanner.nextInt()
。你可以这样做
if(in.hasNextInt())
in.nextInt();
你可以试试这个,它对我有用
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
Scanner in= new Scanner(new File("Experiment/src/test/java/example/num.txt"));
in.useDelimiter("\\D");
while(in.hasNextLine()){
System.out.print(in.nextInt());
}
}
输出:-
234632123
请在.hasNextLine()中尝试
而不是在.hasNext()中尝试
。阅读
希望对您有所帮助。我以前试过。它只打印第一行(234),即使in.next()也适用于我。您使用的是哪个版本的java。in.next()适用于我。真正的问题是为什么in.nextline()不起作用,特别是当in.next()在下面的答案中提到的.hasNextLine()中输出纯整数时。这对您有效吗?因为它给了我java.util.InputMismatchException.Yes它工作正常。更改该文件中的数据并创建一个新文件,然后再次测试。OP发布了相同的代码,对吗?这里怎么了?我想了解。
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
Scanner in= new Scanner(new File("Experiment/src/test/java/example/num.txt"));
in.useDelimiter("\\D");
while(in.hasNextLine()){
System.out.print(in.nextInt());
}
}