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