黑马程序员技术交流社区

标题: 面向对象改写day07的猜数字小游戏 [打印本页]

作者: cjwhale    时间: 2016-1-23 22:16
标题: 面向对象改写day07的猜数字小游戏
本帖最后由 cjwhale 于 2016-1-23 22:16 编辑

    基础班day07最后有一个猜数字小游戏案例, 但是明明一整天讲的都是面向对象的内容, 最后的案例里面却没有用到面向对象的思想.
    晚自习用已学的一些java知识, 重新改写了这个小游戏. 代码如下:        
  1. import java.util.Scanner;

  2. // 测试类, 包括main方法
  3. class Test {
  4.     public static void main(String[] args) {
  5.         Scanner sc = new Scanner(System.in);
  6.         System.out.println("请输入一个 1 - 100 之间的整数: ");
  7.         // 将游戏视为一个对象, 因此只要简单的告诉
  8.         // guessNum()一个整数就可以了
  9.         while (!AGame.guessNum(sc.nextInt())) ;
  10.     }
  11. }

  12. // 游戏类
  13. class AGame {
  14.     // 三个私有的静态成员变量, num表示随机生成的数字
  15.     // leftNum, rightNum 用来提示num的范围.
  16.     private static int num = (int)(Math.random() * 100) + 1;
  17.     private static int leftNum = 1, rightNum = 100;
  18.     // 私有化构造方法, 禁止其他类实例化该类的对象.
  19.     private AGame() {}
  20.     // 传入一个整数, 猜中则返回true, 否则返回false, 并在屏幕
  21.     // 打印 num 的范围.
  22.     public static boolean guessNum(int result) {
  23.         if (result > num)
  24.             rightNum = result;
  25.         else if (result < num)
  26.             leftNum = result;
  27.         else {
  28.             System.out.println("恭喜你! 猜中了");
  29.             return true;
  30.         }
  31.         System.out.println("在 " + leftNum + " - " + rightNum + " 之间. ");
  32.         return false;
  33.     }
  34. }
复制代码
   通过 private 和 static 关键字, 将 AGame 类封装起来, 对外只提供一个 guessNum() 方法, 这样这个猜数字小游戏案例才能更符合day07的内容.

作者: zhenufo    时间: 2016-1-23 22:20
我来顶一下
作者: cjwhale    时间: 2016-1-23 22:23
zhenufo 发表于 2016-1-23 22:20
我来顶一下

别水啦, 多敲代码.
作者: alwayszhao    时间: 2016-1-23 22:24
矮油不错哦 我也准备做一个
作者: zhenufo    时间: 2016-1-23 22:24
cjwhale 发表于 2016-1-23 22:23
别水啦, 多敲代码.

水水更健康




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2