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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ぺsimon☆ 中级黑马   /  2013-4-17 17:03  /  1618 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ぺsimon☆ 于 2013-4-18 17:35 编辑
  1. /**
  2. 毕老师用电脑上课

  3. 开始思考问题,名字提炼法
  4. 毕老师初始化有名字,初始化之后又会有电脑
  5. 毕老师有讲课功能prelect();

  6. 电脑有运行run功能和重启功能rest,这两个功能都是有办法解决的,所以都继承Exception类
  7. state=1  电脑正常运行
  8. state=2  电脑蓝屏
  9. state=3  电脑冒烟了
  10. */

  11. class LanPingException extends Exception //定义一个电脑蓝屏异常类
  12. {
  13.         LanPingException(String msg)
  14.         {
  15.         super(msg);//调用父类的构造函数
  16.         }
  17.         

  18. class MaoYanException extends Exception //定义一个电脑冒烟异常
  19. {
  20.         MaoYanException(String msg)
  21.         {
  22.         super(msg);//调用父类的构造函数
  23.         }
  24. }

  25. class NoPlanException extends Exception
  26. {
  27.         NoPlanException(String msg)
  28.         {
  29.         super(msg);  //调用父类的构造函数
  30.         }
  31. }
  32. }
  33. class Compluter  //定义一个电脑类
  34. {
  35.         private static int state=2;
  36.         
  37.         public void run()throws LanPingException,MaoYanException//抛出异常
  38.         {
  39.         if(state==1)
  40.         System.out.println("电脑正常运行");

  41.         if(state==2)
  42.         throw new LanPingException("电脑蓝屏啦");  //抛出 LanPingException异常

  43.         if(state==3)
  44.         throw new MaoYanException("电脑冒烟啦");  //抛出MaoYanException异常
  45.         }
  46.         public void rest()
  47.         {
  48.         System.out.println("电脑重启");
  49.         state=1;
  50.         run();
  51.         }
  52.         
  53.         
  54.         
  55. }

  56. class Teacher  //定义一个老师类
  57. {
  58.         private String name;
  59.         private Compluter cmp;
  60.         Teacher(String name)
  61.         {
  62.         this.name=name; //把name赋值给当前对象
  63.         cmp=new Compluter();   //创建电脑对象
  64.         }
  65.         public void prelect()
  66.         {
  67.         try
  68.         {
  69.         cmp.run();    //调用电脑的运行功能
  70.         System.out.println(name+"开始讲课");
  71.         }
  72.         catch(LanPingException e)   //捕抓电脑LanPingException异常
  73.         {
  74.         cmp.rest();    //调用电脑重启方法
  75.         }
  76.         catch(MaoYanException e)  //捕抓电脑MaoYanException异常
  77.         {
  78.         throw new NoPlanException("课时无法继续"+e.getMessage());
  79.         }
  80.         }
  81. }
  82. class TeacherDemo  
  83. {
  84.         public static void main(String[] args)
  85.         {
  86.         Teacher t=new Teacher("毕老师");  //创建一个老师对象
  87.         try
  88.         {
  89.         t.prelect();  
  90.         }
  91.         catch(NoPlanException e)        
  92.         {
  93.         System.out.println(e.toString());  
  94.         System.out.println("换老师或者放假");
  95.         }
  96.         }
  97. }



  98. 错误提示:
  99. TeacherDemo.java:42: 找不到符号
  100. 符号: 类 MaoYanException
  101. 位置: 类 Compluter
  102.         public void run()throws LanPingException,MaoYanException//抛出异常
  103.                                                  ^
  104. TeacherDemo.java:51: 找不到符号
  105. 符号: 类 MaoYanException
  106. 位置: 类 Compluter
  107.         throw new MaoYanException("电脑冒烟啦");  //抛出MaoYanException异常
  108.                   ^
  109. TeacherDemo.java:84: 找不到符号
  110. 符号: 类 MaoYanException
  111. 位置: 类 Teacher
  112.         catch(MaoYanException e)  //捕抓电脑MaoYanException异常
  113.               ^
  114. TeacherDemo.java:86: 找不到符号
  115. 符号: 类 NoPlanException
  116. 位置: 类 Teacher
  117.         throw new NoPlanException("课时无法继续"+e.getMessage());
  118.                   ^
  119. TeacherDemo.java:99: 找不到符号
  120. 符号: 类 NoPlanException
复制代码
希望各位兄弟帮帮忙

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 java冬冬 于 2013-4-17 17:50 编辑

{:soso_e152:}给你改了下
  1. /**
  2. 毕老师用电脑上课

  3. 开始思考问题,名字提炼法
  4. 毕老师初始化有名字,初始化之后又会有电脑
  5. 毕老师有讲课功能prelect();

  6. 电脑有运行run功能和重启功能rest,这两个功能都是有办法解决的,所以都继承Exception类
  7. state=1 电脑正常运行
  8. state=2 电脑蓝屏
  9. state=3 电脑冒烟了
  10. */

  11. class LanPingException extends Exception //定义一个电脑蓝屏异常类
  12. {
  13. LanPingException(String msg)
  14. {
  15. super(msg);//调用父类的构造函数
  16. }

  17. }
  18. class MaoYanException extends Exception //定义一个电脑冒烟异常
  19. {
  20. MaoYanException(String msg)
  21. {
  22. super(msg);//调用父类的构造函数
  23. }
  24. }

  25. class NoPlanException extends Exception
  26. {
  27. NoPlanException(String msg)
  28. {
  29. super(msg); //调用父类的构造函数
  30. }
  31. }
  32. class Compluter //定义一个电脑类
  33. {
  34. private static int state=2;

  35. public void run()throws LanPingException,MaoYanException//抛出异常
  36. {
  37. if(state==1)
  38. System.out.println("电脑正常运行");

  39. if(state==2)
  40. throw new LanPingException("电脑蓝屏啦"); //抛出 LanPingException异常

  41. if(state==3)
  42. throw new MaoYanException("电脑冒烟啦"); //抛出MaoYanException异常
  43. }
  44. public void rest()
  45. {
  46. state=1;
  47. System.out.println("电脑重启");


  48. }



  49. }

  50. class Teacher //定义一个老师类
  51. {
  52. private String name;
  53. private Compluter cmp;
  54. Teacher(String name)
  55. {
  56. this.name=name; //把name赋值给当前对象
  57. cmp=new Compluter(); //创建电脑对象
  58. }
  59. public void prelect() throws NoPlanException

  60. {
  61. try
  62. {
  63. cmp.run(); //调用电脑的运行功能
  64. System.out.println(name+"开始讲课");
  65. }
  66. catch(LanPingException e) //捕抓电脑LanPingException异常
  67. {
  68. cmp.rest(); //调用电脑重启方法
  69. }
  70. catch(MaoYanException e) //捕抓电脑MaoYanException异常
  71. {
  72. throw new NoPlanException("课时无法继续"+e.getMessage());
  73. }
  74. }
  75. }
  76. class TeacherDemo
  77. {
  78. public static void main(String[] args)
  79. {
  80. Teacher t=new Teacher("毕老师"); //创建一个老师对象
  81. try
  82. {
  83. t.prelect();
  84. }
  85. catch(NoPlanException e)
  86. {
  87. System.out.println(e.toString());
  88. System.out.println("换老师或者放假");
  89. }
  90. }
  91. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 沈浩 于 2013-4-17 18:03 编辑

class LanPingException extends Exception //定义一个电脑蓝屏异常类
{
        LanPingException(String msg)
        {
        super(msg);//调用父类的构造函数
        }
      //这里少了括号
class MaoYanException extends Exception //定义一个电脑冒烟异常
{
        MaoYanException(String msg)
        {
        super(msg);//调用父类的构造函数
        }
}
class NoPlanException extends Exception
{
        NoPlanException(String msg)
        {
        super(msg);  //调用父类的构造函数
        }
}
}    //这里括号多了
class Compluter  //定义一个电脑类
{
        private static int state=2;
        public void run()throws LanPingException,MaoYanException//抛出异常
        {
        if(state==1)
        System.out.println("电脑正常运行");
       if(state==2)
        throw new LanPingException("电脑蓝屏啦");  //抛出 LanPingException异常
        if(state==3)
        throw new MaoYanException("电脑冒烟啦");  //抛出MaoYanException异常
        }
        public void rest()
        {
        System.out.println("电脑重启");
        state=1;
        run();     //此处要处理异常
        }
}
class Teacher  //定义一个老师类
{
        private String name;
        private Compluter cmp;
        Teacher(String name)
        {
        this.name=name; //把name赋值给当前对象
        cmp=new Compluter();   //创建电脑对象
        }
        public void prelect()     //此处要throws NoPlanException
        {
        try
        {
        cmp.run();    //调用电脑的运行功能
        System.out.println(name+"开始讲课");
        }
        catch(LanPingException e)   //捕抓电脑LanPingException异常
        {
        cmp.rest();    //调用电脑重启方法
        }
        catch(MaoYanException e)  //捕抓电脑MaoYanException异常
        {
        throw new NoPlanException("课时无法继续"+e.getMessage());
        }
        }
}

class TeacherDemo  
{
        public static void main(String[] args)
        {
        Teacher t=new Teacher("毕老师");  //创建一个老师对象
        try
        {
        t.prelect();  
        }
        catch(NoPlanException e)        
        {
        System.out.println(e.toString());  
        System.out.println("换老师或者放假");
        }
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
好吧,我服你们了,非要把一个简单的问题整的这么老长。
回复 使用道具 举报
= =  这种提示明显是单词拼写错误之类的问题。好好检查一下拼写。。。。。
都搞这么复杂。。。。。
回复 使用道具 举报
沈浩 发表于 2013-4-17 17:53
class LanPingException extends Exception //定义一个电脑蓝屏异常类
{
        LanPingException(String  ...

兄弟谢谢你,程序可以正常运行了
有一个不明白就是,我电脑重启的时候我把state=1了,调用run()方法,他是不会出异常的,但是为什么当我调用run()的时候还提示说必须对其声明或捕抓以便抛出呢?
回复 使用道具 举报
沈浩 中级黑马 2013-4-18 15:22:07
7#
ぺsimon☆ 发表于 2013-4-18 15:01
兄弟谢谢你,程序可以正常运行了
有一个不明白就是,我电脑重启的时候我把state=1了,调用run()方法,他是不 ...

    public void run()throws LanPingException,MaoYanException//抛出异常
因为run()抛异常   你用它你就要对它进行处理啊
回复 使用道具 举报
沈浩 发表于 2013-4-18 15:22
public void run()throws LanPingException,MaoYanException//抛出异常
因为run()抛异常   你用它你 ...

哦,明白了谢谢
回复 使用道具 举报
/**

毕老师用电脑上课

开始思考问题,名字提炼法

毕老师初始化有名字,初始化之后又会有电脑

毕老师有讲课功能prelect();

电脑有运行run功能和重启功能rest,这两个功能都是有办法解决的,所以都继承Exception类

state=1  电脑正常运行

state=2  电脑蓝屏

state=3  电脑冒烟了

*/
class LanPingException extends Exception
{
        LanPingException(String msg)
        {
                super(msg);
        }
}
class MaoYanException extends Exception
{
        MaoYanException(String msg)
        {
                super(msg);
        }
}
class NoPlanException extends Exception
{
        NoPlanException(String msg)
        {
                super(msg);
        }
}
class computer//建议你最好规范写法,电脑的英文是computer而不是compluter
{
        private static int state=2;
        public void run()throws LanPingException,MaoYanException
        {
                if(state==1)
                        System.out.println("电脑正常运行");
                if(state==2)
                        throw new LanPingException("电脑蓝屏啦");
                if(state==3)
                        throw new MaoYanException(("电脑冒烟啦");

        }
        public void reset()
        {
                System.out.println("电脑重启");//这个地方不要调用run方法,因为你的方法声明要抛异常,如果调用还要对其进行try...catch
                state=1;
        }
}
class Teacher
{
        private String name;
        private Computer cmp=null;//这个地方最好设为空,避免空指针异常
        Teacher(String name)
        {
                this.name=name;
                cmp=new Computer();
        }
        public void prelect() throws NoPlanException//这里要抛给主函数异常
        {
                try
                {
                        cmp.run();
                        System.out.println(name+"开课了");
                }
                catch (LanPingException e)
                {
                        cmp.reset();//此时state=1
                        prelect();//再次调用prelect()方法,电脑正常
                }
                catch(MaoYanException e)
                {
                        throw new NoPlanException("课时无法继续"+e.getMessage());
                }
        }
}


class TeacherDemo
{
        public static void main(String[] args)
        {
                Teacher t = new Teacher("毕老师");
                try
                {
                        t.prelect();
                }
                catch (NoPlanException e)
                {
                        System.out.println(e.toString());
                        System.out.println("换老师或者放假");
                }
        }
}
这个是我改的啊,你看看吧。可以不在reset方法里面调用run方法,这样减少代码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马