当前位置: 代码迷 >> Eclipse >> 至于 hasNextInt
  详细解决方案

至于 hasNextInt

热度:509   发布时间:2016-04-23 19:01:01.0
关于 hasNextInt
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();        }        }    }}