题目描述
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E。
输入
输入数据有多组,每组占一行,由一个整数组成。
输出
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:Score is error!
思路
因为使用的是Java语言,获取的输入都是字符序列,本题需要分为实数和非实数考虑。若为实数则判断是否在五个区间内,若不为实数则直接打印“Score is error!”。
难点
题目的难点在于怎么判断字符序列是实数。
我采用了重写boolean isNumeric(String str)函数。该函数用于判断字符序列是否为实数。
代码
import java.util.Scanner;
public class Main {
public static boolean isNumeric(String str)
{
if(str == null)
{
return false;
}
int sz = str.length();
for(int i = 0; i < sz; i++)
{
if(Character.isDigit(str.charAt(i)) == false)
{
return false;
}
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
String t = in.next();
if(!isNumeric(t))
{
System.out.println("Score is error!");
continue;
}
int num = Integer.valueOf(t);
char grade;
if(num < 60 && num >= 0)
{
grade = 'E';
}
else if(num >= 60 && num < 70)
{
grade = 'D';
}
else if(num >= 70 && num < 80)
{
grade = 'C';
}
else if(num >= 80 && num < 90)
{
grade = 'B';
}
else if(num >= 90 && num <= 100)
{
grade = 'A';
}
else
{
System.out.println("Score is error!");
continue;
}
System.out.println(grade);
}
in.close();
}
}