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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜默   /  2013-7-15 19:22  /  15170 人查看  /  241 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

封装,继承,多态

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 赞一个!

查看全部评分

回复 使用道具 举报
NullPointerException:空指针异常  ,IndexOutOfBoundsException:数组越界异常  ,ClassNotFoundException:不能加载所需的类, IllegalArgumentException:方法接受到非法参数 ,ClassCastException:对象强制类型转换错误

点评

超时  发表于 2013-7-16 07:44
回复 使用道具 举报
  1. package Thread;

  2. public class FirstThread extends Thread {
  3.            private int i;
  4.       
  5.            public void run(){          //重写线程的run方法
  6.                   for(;i<100;i++){
  7.                           
  8.                           System.out.println(getName()+"  "+i);
  9.                   }
  10.                   
  11.            }
  12.           public static void main(String[] args){
  13.                      for(int i=0;i<100;i++){
  14.                                System.out.println(Thread.currentThread().getName()+" "+i);
  15.                               
  16.                                if(i==20){
  17.                                        new FirstThread().start();
  18.                                       
  19.                                        new FirstThread().start();
  20.                              }
  21.                      }
  22.                      
  23.        
  24.           }

  25. }
复制代码
第一种是继承Thread方法再调用start()方法启动线程,
还有一种是继承Runnable接口,覆盖run方法

点评

超时  发表于 2013-7-16 07:46
回复 使用道具 举报
InputStream, BufferedWriter, FileWriter,BufferedReader, FileInputStream

点评

超时  发表于 2013-7-16 07:49

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 赞一个!

查看全部评分

回复 使用道具 举报
重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关。
重写涉及的是子类和父类之间的同名方法,要求方法名相同,参数列表相同,返回值类型相同(或者是其子类)

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
  1. package Thread;
  2. /*
  3. * 单例设计模式  
  4. */
  5. //饿汉式
  6. /*
  7. * Class Single
  8. * {   
  9. *       private static final Single s = new Single();
  10. *       private Single(){}
  11. *       public static Single getInstanse(){
  12. *                         return s;
  13. *       }
  14. *
  15. * }
  16. * */
  17. public class DanLi {    //懒汉式
  18.          private static DanLi dl =null;
  19.          private DanLi(){};
  20.          public static DanLi getInstanse(){
  21.                    if(dl==null){
  22.                            dl = new DanLi();
  23.                    }
  24.                    return dl;
  25.          }

  26. }
复制代码
恶汉式直接获取对象
懒汉式延迟加载,但是如果有多线程的程序访问程序时会出现安全问题,可以通过添加同步代码块或者同步函数都可以解决。但是效率有点低,可以再加一层判断增加代码效率

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 赞一个!

查看全部评分

回复 使用道具 举报
3个我觉的是  前面两个不是

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 赞一个!

查看全部评分

回复 使用道具 举报
是第3行出现了错误
回复 使用道具 举报
for循环中的代码执行2次   for循环的条件执行3次
回复 使用道具 举报
亲雨泽回复:7楼,18楼,27楼,41楼,76楼,83楼,102楼,123楼,142楼

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 十题全答,加1

查看全部评分

回复 使用道具 举报
  1. package com.game.guess;

  2. /**
  3. * 计算机类
  4. *
  5. */
  6. public class Computer {
  7.        String name = "电脑"; // 名字
  8.        int score = 0;;       // 积分
  9.       
  10.        /**
  11.         * 出拳
  12.         * @return 出拳结果:1.剪刀 2.石头 3.布
  13.         */
  14.        public int showFist(){
  15.                // 产生随机数
  16.                int show = (int)(Math.random()*10)%3 + 1;  //产生随机数,表示电脑出拳
  17.               
  18.                // 输出出拳结果并返回
  19.                switch(show){
  20.                   case 1:
  21.                           System.out.println(name+"出拳: 剪刀");
  22.                           break;
  23.                   case 2:
  24.                           System.out.println(name+"出拳: 石头");
  25.                           break;
  26.                   case 3:
  27.                           System.out.println(name+"出拳: 布");
  28.                           break;
  29.                }
  30.                return show;
  31.        }
  32. }
复制代码
  1. package com.game.guess;
  2. import java.util.Scanner;

  3. /**
  4. * 游戏类
  5. *
  6. */
  7. public class Game {
  8.     Person person;       //甲方
  9.     Computer computer;   //乙方
  10.     int count;           //对战次数
  11.        
  12.     /**
  13.      * 初始化
  14.      */
  15.     public void initial(){
  16.             person = new Person();
  17.             computer = new Computer();
  18.             count = 0;
  19.     }
  20.                
  21.     /**
  22.      * 开始游戏
  23.      */
  24.         public void startGame() {
  25.                
  26.                 System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------");
  27.                 System.out.println("\n\t\t******************");
  28.                 System.out.println  ("\t\t**  猜拳, 开始    **");
  29.                 System.out.println  ("\t\t******************");
  30.                
  31.                 System.out.println("\n出拳规则:1.剪刀 2.石头 3.布");
  32.                
  33.                 Scanner input = new Scanner(System.in);
  34.                 String exit = "n";  // 退出系统
  35.                
  36.                 do{
  37.                         initial();  // 初始化
  38.                         /*选择对方角色*/
  39.                         System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): ");
  40.                        
  41.                         int role = input.nextInt();
  42.                         if(role == 1){
  43.                                 computer.name = "刘备";
  44.                         }else if(role == 2){
  45.                                 computer.name = "孙权";
  46.                         }else if(role == 3){
  47.                                 computer.name = "曹操";
  48.                         }   
  49.                        
  50.                         // 输入用户姓名
  51.                         /*输入用户姓名*/
  52.                         System.out.print("请输入你的姓名:");
  53.                         person.name = input.next();
  54.                        
  55.                         System.out.println(person.name+"  VS  "+computer.name+"  对战\n");
  56.                         // 扩展功能1结束
  57.                        
  58.                         System.out.print("要开始吗?(y/n) ");
  59.                         String start = input.next();  // 开始每一局游戏
  60.                        
  61.                        
  62.                         int perFist;   //用户出的拳
  63.                         int compFist;  //计算机出的拳
  64.                        
  65.                         while(start.equals("y")){
  66.                         /*出拳*/
  67.                                 perFist = person.showFist();
  68.                                 compFist = computer.showFist();
  69.                                 /*裁决*/
  70.                                 if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){
  71.                                         System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n");  //平局
  72.                                 }else if((perFist == 1 && compFist == 3) || (perFist == 2  && compFist == 1) || (perFist == 3 && compFist == 2)){
  73.                                         System.out.println("结果: 恭喜, 你赢了!");  //用户赢
  74.                                         person.score++;
  75.                                 }else{
  76.                                         System.out.println("结果说:^_^,你输了,真笨!\n");  //计算机赢
  77.                                         computer.score++;
  78.                                 }
  79.                                 count++;
  80.                                 System.out.print("\n是否开始下一轮(y/n):  ");
  81.                                 start = input.next();       
  82.                         }
  83.                         /*显示结果*/
  84.                         showResult();                       
  85.                        
  86.                         // 循环游戏,直到退出系统
  87.                         System.out.print("\n要开始下一局吗?(y/n):");
  88.                         exit = input.next();                       
  89.                         System.out.println();
  90.                        
  91.                 }while(!exit.equals("n"));       
  92.                
  93.                 System.out.println("系统退出!");
  94.         }
  95.        
  96.         /**
  97.          * 显示比赛结果
  98.          */
  99.         public void showResult(){
  100.                 /*显示对战次数*/
  101.                 System.out.println("---------------------------------------------------");
  102.                 System.out.println(computer.name + "  VS  " + person.name);
  103.                 System.out.println("对战次数:"+ count);
  104.                
  105.                 // 显示最终的得分
  106.                 System.out.println("\n姓名\t得分");               
  107.                 System.out.println(person.name+"\t"+person.score);
  108.                 System.out.println(computer.name+"\t"+computer.score+"\n");
  109.                
  110.                
  111.                 /*显示对战结果*/
  112.                 int result = calcResult();
  113.                 if(result == 1){
  114.                         System.out.println("结果:打成平手,下次再和你一分高下!");
  115.                 }else if(result == 2){
  116.                         System.out.println("结果:恭喜恭喜!");   //用户获胜
  117.                 }else{
  118.                         System.out.println("结果:呵呵,笨笨,下次加油啊!");   //计算机获胜
  119.                 }
  120.                 System.out.println("---------------------------------------------------");
  121.         }
  122.        
  123.         /**
  124.          * 计算比赛结果
  125.          * @return 1:战平;2:用户赢;3:电脑赢
  126.          */
  127.     public int calcResult(){
  128.             if(person.score == computer.score){
  129.                       return 1; // 战平
  130.             }else if(person.score > computer.score){
  131.                       return 2; // 用户赢
  132.             }else{
  133.                       return 3; // 电脑赢
  134.             }
  135.            
  136.     }
  137. }
复制代码
  1. package com.game.guess;
  2. import java.util.Scanner;
  3. /**
  4. *
  5. * 玩家类
  6. */
  7. public class Person {
  8.       String name = "匿名";  // 名字
  9.       int score = 0;         // 积分  
  10.       
  11.       /**
  12.        * 出拳
  13.        * @return 出拳结果:1.剪刀 2.石头 3.布
  14.        */
  15.       public int showFist(){
  16.               // 接收用户的选择
  17.               Scanner input = new Scanner(System.in);
  18.               System.out.print("\n请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :");
  19.               int show = input.nextInt();
  20.               
  21.               // 输出出拳结果,并返回
  22.               switch(show){
  23.                   case 1:
  24.                           System.out.println("你出拳: 剪刀");
  25.                           break;
  26.                   case 2:
  27.                           System.out.println("你出拳: 石头");
  28.                           break;
  29.                   case 3:
  30.                           System.out.println("你出拳: 布");
  31.                           break;
  32.               }
  33.               return show;
  34.       }
  35. }
复制代码
  1. package com.game.guess;


  2. /**
  3. * 人机互动版猜拳游戏
  4. * 程序入口
  5. */
  6. public class StartGuess {
  7.         public static void main(String[] args) {
  8.                 Game game = new Game();
  9.                 game.startGame();
  10.         }
  11. }
复制代码
输出结果:
----------------欢 迎 进 入 游 戏 世 界----------------

                ******************
                **  猜拳, 开始    **
                ******************

出拳规则:1.剪刀 2.石头 3.布
请选择对方角色(1:刘备 2:孙权 3:曹操): 2
请输入你的姓名:康康
康康  VS  孙权  对战

要开始吗?(y/n) y

请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :2
你出拳: 石头
孙权出拳: 剪刀
结果: 恭喜, 你赢了!

是否开始下一轮(y/n):  y

请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :3
你出拳: 布
孙权出拳: 剪刀
结果说:^_^,你输了,真笨!


是否开始下一轮(y/n):  y

请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :2
你出拳: 石头
孙权出拳: 石头
结果:和局,真衰!嘿嘿,等着瞧吧 !


是否开始下一轮(y/n):  y

请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :1
你出拳: 剪刀
孙权出拳: 剪刀
结果:和局,真衰!嘿嘿,等着瞧吧 !


是否开始下一轮(y/n):  y

请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :3
你出拳: 布
孙权出拳: 剪刀
结果说:^_^,你输了,真笨!


是否开始下一轮(y/n):  n
---------------------------------------------------
孙权  VS  康康
对战次数:5

姓名        得分
康康        1
孙权        2

结果:呵呵,笨笨,下次加油啊!
---------------------------------------------------

要开始下一局吗?(y/n):n

系统退出!

评分

参与人数 1技术分 +2 收起 理由
夜默 + 2 超时

查看全部评分

回复 使用道具 举报
亲雨泽 发表于 2013-7-16 00:36
输出结果:
----------------欢 迎 进 入 游 戏 世 界----------------

抢答题回复在:7楼,18楼,27楼,41楼,76楼,83楼,102楼,123楼,142楼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马