一输入浮点型就报Exception in thread "main" java.util.InputMismatchException,怎么办

import java.util.ArrayList;
import java.util.Scanner;

public class d {
public static void main(String[] args) {
double a = 0;
double b = 0;
double c = 0;
double d = 0;
double e = 0;
ArrayList f = new ArrayList();
Scanner sc = new Scanner(System.in);
int grade = sc.nextInt();
while(grade!=-1){
f.add(grade);
//System.out.println(a.toString());
grade = sc.nextInt();
}
for(double aa:f){
if(aa<60){
a++;
}else if(aa>=60&&aa<70){
b++;
}else if(aa>=70&&aa<80){
c++;
}else if(aa>=80&&aa<90){
d++;
}else if(aa>=90&&aa<=100){
e++;
}
}
System.out.println("不及格人数有:"+a);
System.out.println("及格人数有:"+b);
System.out.println("中等人数有:"+c);
System.out.println("良好人数有:"+d);
System.out.println("优秀人数有:"+e);
}
}

肯定报错了,因为你使用的是接收整型数的方法。
int grade = sc.nextInt();
只能输入整型,否则就会报错,如果要接收浮点型,就修改为浮点型方法。

double grade = sc.nextDouble();

完整修改如下:


import java.util.ArrayList;
import java.util.Scanner;
public class d {
public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
ArrayList<Double> f = new ArrayList();
Scanner sc = new Scanner(System.in);
double grade = sc.nextDouble();
while(grade>=0.0){
f.add(grade);
grade = sc.nextDouble();
}
for(double aa:f){
if(aa<60){
a++;
}else if(aa>=60&&aa<70){
b++;
}else if(aa>=70&&aa<80){
c++;
}else if(aa>=80&&aa<90){
d++;
}else if(aa>=90&&aa<=100){
e++;
}
}
System.out.println("不及格人数有:"+a);
System.out.println("及格人数有:"+b);
System.out.println("中等人数有:"+c);
System.out.println("良好人数有:"+d);
System.out.println("优秀人数有:"+e);
}
}

img

img

12行nextScore改为nextDouble。再有错误贴图看看

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632