A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马明杨 中级黑马   /  2013-11-16 12:20  /  1583 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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("不及格");

        }

}

这个程序能实现 所要求的功能,测试已经通过。现在拿出来分享一下。

另外我有一个问题:我想通过自定义异常,来捕获不同的输入数据的错误类型,并提供相应的方案,这一点我没有实现,有大神请告知我,我想知道怎么样才能更加完善,谢谢

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
枫儿 + 1 + 2 很给力!

查看全部评分

2 个回复

倒序浏览
你的程序还是有漏洞的,你的方法中还缺了判断,如果别人输入超过一百或者低于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("请输入正确的数字");
                                }
                        }
                       
                }
        }

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
枫儿 + 1 + 2 很给力!

查看全部评分

回复 使用道具 举报
终结者 发表于 2013-11-16 13:56
你的程序还是有漏洞的,你的方法中还缺了判断,如果别人输入超过一百或者低于0的话是会出错的,这个程序我 ...

有道理,我研究一些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马