Java 输入不匹配异常当尝试使用扫描仪时,我遗漏了什么?
此代码引发以下错误:Java 输入不匹配异常当尝试使用扫描仪时,我遗漏了什么?,java,java.util.scanner,Java,Java.util.scanner,此代码引发以下错误: package baker; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class FileReader { public static void main(String[] args) throws FileNotFoundException { String name;
package baker;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileReader {
public static void main(String[] args) throws FileNotFoundException {
String name;
double height;
double inches;
double idealWeight;
Scanner fileReader;
fileReader = new Scanner(new FileInputStream("Data/patients.txt"));
while (fileReader.hasNext()) {
name = fileReader.next();
System.out.println("Name: ");
height = fileReader.nextInt();
inches = fileReader.nextInt();
fileReader.nextLine();
idealWeight = 110 + (height - 5) * 5 + inches * 5;
System.out.println("Ideal Weight: " + idealWeight);
}
}
}
错误的最后一行指向第22行,即下一行:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at baker.FileReader.main(FileReader.java:22)
C:\Users\SFU\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
据我所知,没有理由出现输入不匹配错误。有什么建议吗?我已经在下面发布了有问题的文件(patients.txt)
原因是您的
姓名
分配。您可以执行以下操作:
Tom Atto
6
3
Eaton Wright
5
5
Cary Oki
5
11
事实是next
返回默认情况下由空格分隔的下一个标记。根据:
publicstringnext()
查找并返回此扫描程序中的下一个完整令牌。完整标记的前面和后面是与分隔符模式匹配的输入
因此,您现在可以看到,名字和姓氏可能有问题。例如,如果文件中有此项:
name = fileReader.next();
你做到了:
John Smith
您将只获得John
,因为它是下一个完整的标记,并在空格处分隔。这意味着,当您扫描整数时:
scanner.next();
扫描仪将遇到Smith
(一个字符串)并抛出输入不匹配异常。使用:
scanner.nextInt();
而是接收整条线路。这将产生约翰·史密斯
。了解更多信息。它与FileInputStream没有任何关系。它与输入数据有关。
scanner.nextInt();
name = fileReader.nextLine();