黑马程序员技术交流社区
标题:
关于这个题目,你们有什么想说的吗?
[打印本页]
作者:
马明杨
时间:
2013-11-16 12:20
标题:
关于这个题目,你们有什么想说的吗?
package com.itheima;
import java.util.Scanner;
public class Score {
/*
* 第一题 学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。 要求:
* 1.输入一个学生的成绩:例如 99,那么输出优。 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
* 3.可以连续输入成绩,当输入over的时候,结束输入成绩
*/
public static void main(String[] args)
throws MyException
{//
MyException.java在另一个文件呢,没有贴出来
// 输入成绩用到了Scanner,创建对象
Scanner sc = null;
String str = "y";
do {
if("y".equals(str))
{
try {
sc = new Scanner(System.in);
System.out.println("请输入一个学生成绩:");
int score = sc.nextInt();
panduan(score);//調用判斷的函數
System.out.println("输入over结束,y继续");
// 除去nextInt()录入的回车换行
sc.nextLine();
// 接收录入
str = sc.nextLine();
// 测试用现实输入的内容
//System.out.println(str);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("数据有误,请重新输入");
//System.exit(0);
//throw new MyException("数据有误,请重新输入");
}
}
} while ("y".equals(str));
}
private static void panduan(int score) {
if (score >= 90 && score <= 100)
System.out.println("优");
else if (score >= 80 && score <= 89)
System.out.println("良");
else if (score >= 70 && score <= 79)
System.out.println("中");
else if (score >= 60 && score <= 69)
System.out.println("及格");
else
System.out.println("不及格");
}
}
这个程序能实现 所要求的功能,测试已经通过。现在拿出来分享一下。
另外我有一个问题:我想通过自定义异常,来捕获不同的输入数据的错误类型,并提供相应的方案,这一点我没有实现,有大神请告知我,我想知道怎么样才能更加完善,谢谢
作者:
终结者
时间:
2013-11-16 13:56
你的程序还是有漏洞的,你的方法中还缺了判断,如果别人输入超过一百或者低于0的话是会出错的,这个程序我昨天也写了下不过用的是正则表达式
import java.util.Scanner;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//需求
// 学生成绩分为四个等级:90~100:优,80~89:良,70~79:中,60~69:及格,0~60:不及格。
// 1.输入一个学生的成绩:例如 99,那么输出优。
// 2.输入成绩必须是整数,范围是0~100,超过范围或者输入的不是整数,要做相应的处理。
// 3.可以连续输入成绩,当输入over的时候,结束输入成绩
//分析
// 1.创建一个键盘录入功能
Scanner in=new Scanner(System.in);
String str=null;
int num=0;
String regex="[\\d]+";
// 2.对输入的数字进行判断及处理
method1(in, regex);
}
private static void method1(Scanner in, String regex) {
String str;
int num;
while(in.hasNext()){
str=in.next(); //获得输入值
if(str.equals("over")){ //判断输入成绩是否结束
System.out.println("输入成绩结束");
break;
}
if(str.matches(regex)){ //通过正则表达式来验证输入是否合法
num=Integer.parseInt(str); //将接收到的String类型转化为int类型
if(0<num&&num>100)
System.out.println("请输入正确的数字");
//判断整数在哪些范围并进行处理
if(num>=0&&num<60){
System.out.println("不及格");
continue; //为了提高程序效率在此使用结束当前循环,以便程序进行下面依次判断(下同)
}
if(num>=60&&num<70){
System.out.println("及格");
continue;
}
if(num>=70&& num<80){
System.out.println("中");
continue;
}
if(num>=80&& num<90){
System.out.println("良");
continue;
}
if(num>90&&num<=100)
System.out.println("优秀");
}else{
System.out.println("请输入正确的数字");
}
}
}
}
作者:
马明杨
时间:
2013-11-16 13:59
终结者 发表于 2013-11-16 13:56
你的程序还是有漏洞的,你的方法中还缺了判断,如果别人输入超过一百或者低于0的话是会出错的,这个程序我 ...
有道理,我研究一些
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2