java - 有一个 InputMismatchException,我该如何解决?
问题描述
问题是输出每个级别的总工资和平均工资,这是我的代码:
URL url=new URL("http://liveexample.pearsoncmg.com/data/Salary.txt");
Scanner input=new Scanner(url.openStream());
String[]FirstName=new String[1000];
String[]LastName=new String[1000];
String[]rank=new String[1000];
int[]salary=new int[1000];
int i=0;
int count=0;
double sum=0;
while(input.hasNext()) {
FirstName[i]=input.nextLine();
LastName[i]=input.nextLine();
rank[i]=input.nextLine();
salary[i]=input.nextInt();
if(rank[i]=="assistant") {
count++;
sum+=salary[i];
System.out.print("Total salary of assistant professors:"+sum+" average: "+sum/count);
}
else if(rank[i]=="associate") {
count++;
sum+=salary[i];
System.out.print("Total salary of associate professors:"+sum+" average: "+sum/count);
}
else if(rank[i]=="full") {
count++;
sum+=salary[i];
System.out.print("Total salary of full professors:"+sum+" average: "+sum/count);
}
else if(rank[i]=="faculty") {
count++;
sum+=salary[i];
System.out.print("Total salary of faculty professors:"+sum+" average: "+sum/count);
}
input.close();
}
但是输出是 InputMismatchException,我检查了很多次代码,我找不到错误
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at HW11_09156136.HW11_09156136_01.main(HW11_09156136_01.java:24)
解决方案
input.nextLine()
不检索流中的下一个单词,它检索下一行。根据您在程序中提供的 url,您的代码将分配FirstName1 LastName1 assistant 79174.73
给FirstName[i]
、FirstName2 LastName2 associate 70817.75
toLastName[i]
等,直到到达 line FirstName4 LastName4 full 116992.43
。从那里它尝试解析FirstName4
为int
,这当然失败了。您需要使用您的程序next()
,它只会将文本获取到下一个空格,而不是换行符,所以
FirstName[i]=input.nextLine();
LastName[i]=input.nextLine();
rank[i]=input.nextLine();
salary[i]=input.nextInt();
可以用类似的东西代替
FirstName[i]=input.next();
LastName[i]=input.next();
rank[i]=input.next();
salary[i]=input.nextInt();
input.nextLine();
(请注意,input.nextLine()
最后你需要一个额外的,推理在这里看到)
推荐阅读
- c# - .NET Core DI:无法使用单例的范围服务
- c# - 使用实体框架的数据库第一个错误
- angular - 无法在 ACE 编辑器中突出显示语法
- jupyter-notebook - 在 RISE 演示文稿中按键时一一显示项目符号
- conv-neural-network - 从 ImageNet 直接推断我的数据集(没有训练或微调)?
- sql - SQL中平均计数的高效查询
- python - 以秒格式绘制时间序列
- sql-server - 如何将 SSIS 查找转换中的代码页修复为 65001?
- matlab - 使用 psychtoolbox 构建实验
- curl - 如何避免在 Jenkins 控制台输出上打印 curl 命令?