import java.util.Scanner;
public class breakDemo {
public static void main(String[]args){
int score;
int sum = 0;
int avg;
int total;
Scanner input = new Scanner(System.in);
System.out.print("输入班级总人数");
if(input.hasNextInt()){
total = input.nextInt();
for(int i = 0 ; i<total;i++){
System.out.print("请输入第"+(i+1)+"位学生的成绩");
if(input.hasNextInt()){
score = input.nextInt();
if(score<80){
continue;
}
sum++;
}else{
System.out.print("输入出错");
}
}
System.out.println("80分以上的学生人数是:"+sum);
double rate = (double)sum/total*100;
System.out.println("80分学生在班级所占的比例为"+rate+"%");
}else{
System.out.println("输入错误");
total = input.nextInt();
}
}
}
运行的时候问题总是出现在,hasNextInt上的求分析
------解决方案--------------------
用正则表达式给你做了一个实例,只是验证了班级人数,下面的你可以照着葫芦画瓢
- Java code
import java.util.Scanner;public class BreakDemo { public static void main(String[]args){ int score; int sum = 0; int avg; int total; Scanner input = new Scanner(System.in); System.out.print("输入班级总人数"); while(true){ String num=input.nextLine();// ; if(num.matches("^[1-9]\\d*$")){ total = Integer.parseInt(num); for(int i = 0 ; i<total;i++){ System.out.print("请输入第"+(i+1)+"位学生的成绩"); if(input.hasNextInt()){ score = input.nextInt(); if(score<80){ continue; } sum++; }else{ System.out.print("输入出错"); } } System.out.println("80分以上的学生人数是:"+sum); double rate = (double)sum/total*100; System.out.println("80分学生在班级所占的比例为"+rate+"%"); break; }else{ System.out.println("输入错误,请重新输入");// total = input.nextInt(); } } }}