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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三生石 中级黑马   /  2014-2-25 19:27  /  883 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 三生石 于 2014-2-26 11:33 编辑

/**需求:老师使用电脑上课
         * 对象:电脑:正常运行
         *                            重新启动
         *                 老师:姓名、拥有电脑、可以上课
         *                 故障:电脑蓝屏
         *                           电脑冒烟
         *                           老师无法上课
         * 情况分析:1.电脑正常运行后,老师正常上课
         *                      2.电脑蓝屏后,重新启动即恢复正常
         *                      3.电脑冒烟后,老师1无法上课,调换老师2上课        
         *                                                                                                                                         @sknishy
         */
class BluePrintException extends Exception
{
        BluePrintException(String Message)
        {
                super(Message);
        }
}
class SmokeRuntimeException extends RuntimeException
{
        SmokeRuntimeException(String Message)
        {
                super(Message);
        }
}
class NoTeachException extends Exception
{
        NoTeachException(String Message)
        {
                super(Message);
        }
}
class Computer
{
        private int state;//使用state表示电脑运行的状态:1为正常运行,0为蓝屏,其它数字表示冒烟了。
        public void setState(int state)
        {
                this.state=state;
        }
        public int getState()
        {
                return state;
        }
        public void run()throws BluePrintException,SmokeRuntimeException
        {
                if(state==1)
                        System.out.print("正常运行,");
                else if(state==0)
                        throw new BluePrintException("蓝屏,");
                else
                        throw new SmokeRuntimeException("出现损坏,");        
        }
        public void reset()
        {
                System.out.println("重新启动");
                state++;//如何定义函数使电脑在蓝屏重新启动后恢复正常,并且让老师开始讲课即使state=1
        }
}
class Teacher
{
        
        private String name;
        private Computer cp;
        Teacher(String name,int k)
        {
                this.name=name;
                cp=new Computer();
                cp.setState(int k);
        }
        public void prelect()throws BluePrintException,NoTeachException
        {
                System.out.print(name+"的电脑");
                try
                {
                        cp.run();
                        
                }
                catch(BluePrintException e)
                {
                        System.out.print(e.getMessage());
                        cp.reset();
                        cp.run();
                }
                catch(SmokeRuntimeException e)
                {
                        System.out.print(e.getMessage());
                        throw new NoTeachException("不上课");
                }
                System.out.println("开始上课。");
        }
        public void chance()
        {
                System.out.println("导致其无法正常上课,正在调新老师前来……请稍等……");
        }
}
class School
{
        public static void main(String[] args)throws BluePrintException,NoTeachException
        {
                Teacher t=new Teacher("穆贞贤",0);
                try
                {
                        t.prelect();
                }
                catch (NoTeachException e)
                {
                        t.chance();
                }
        }

}
编译一直无法通过,提示需要“.class”和“;”,求高手指教,并说明原因……

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
已运行, Teacher类中Teacher(String name,int k)方法的cp.setState(int k);语句有个问题,方法的参数已经定义了一个int k,这句不需要再重新定义一次。除此之外运行无问题

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你已经在class Teacher的构造函数Teacher(String name,int k)中声明了一个k变量,然后在主函数中创建Tearch的对象时,已经将0赋值给k了。那么你在调用Computer的setState方法时只需要将k的值传进去就可以了,而不是重新声明一个k变量。将cp.setState(int k);改成cp.setState(k);就可以了。 写的乱不知道你懂意思了么?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马