在阅读简单文件时,我试图仅从中获取数字。
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。
答案 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(..)
会引发NumberFormatException
和scan.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
}
搞乱分隔符可能对你没有帮助。扫描仪默认使用任何空格作为分隔符,这应该是您想要的。