仅读取文件输入中的数字

时间:2016-03-05 18:20:17

标签: java

在阅读简单文件时,我试图仅从中获取数字。

Hi 80 
Bye 90
Cool 100

使用标签空间的扫描仪分隔符可以帮助我忽略数字前的空格,但是当我尝试抓取数字本身时,它会抓取80Bye之后的内容。有没有解决这个问题?

编辑:

        Scanner scan = new Scanner(new File("score.txt"));
        scan.useDelimiter(" ");

        while( scan.hasNext() ){
            name=scan.next();
            System.out.println(name);// Prints Hi
            num=scan.next();
            scan.nextLine();
            scan.delimiter();
            System.out.println(num); //Prints 80
                                     //       Bye
            holdAvg+=Integer.parseInt(num); // Error occurs

            count++;
        }

当我尝试接受80号时,Bye紧随其后。我尝试过使用" \ n"分隔符,但也不起作用。当我使用" \ n"它说'#34; 100"当我试图解析它时成为一个int。

2 个答案:

答案 0 :(得分:1)

没有必要设置明确的分隔符,默认(空格)会很好:

    Scanner scan = new Scanner(new File("score.txt"));

    while( scan.hasNext() )
    {
        System.out.println("Word: " + scan.next());
        System.out.println("Number: " + scan.nextInt());
    }

try catch块对于确保程序在获得意外输入时不会崩溃非常有用。 Integer.parseInt(..)会引发NumberFormatExceptionscan.nextInt()投掷InputMismatchException

请参阅扫描程序上的javadoc:https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

如果抛出异常,你可以抓住它。

try {
    holdAvg += Integer.parseInt(num);
} catch(NumberFormatException e) {
    // silently catch exception
}

搞乱分隔符可能对你没有帮助。扫描仪默认使用任何空格作为分隔符,这应该是您想要的。