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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高丽华 中级黑马   /  2013-12-30 15:29  /  1872 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高丽华 于 2014-1-1 11:02 编辑

//使用do-while改写猜数字游戏。
import java.util.*;
class Test_2
{
        public static void main(String[] args)
        {
                Random r=new Random();//创建随机数生成对象
                int num=r.nextInt(10);//调用nextInt(int i);给返回的随机数限定一个范围。
                Scanner s=new Scanner(System.in);//创建文本扫描器,生成的值是从控制台上扫描的。
                int getNum=-1;//控制台输入的数,是不是getNum初始化可以为任何一个数字?
                int count=3;
                do
                {
                        getNum=s.nextInt();//扫描控制台上的信息
                        if (getNum<num)
                        {
                                System.out.println("您猜的数小了");
                        }
                        else if(getNum>num)
                        {
                                System.out.println("您猜的数大了");
                        }
                        else
                        {
                                System.out.println("恭喜您猜对了");
                                break;
                        }
                        count--;
                        if (count==2)
                        {
                                System.out.println("您还有两次机会");
                        }
                        else if (count==1)
                        {
                                System.out.println("您还有一次机会");
                        }
                        else
                        {
                                System.out.println("GAME OVER");
                                break;
                        }
                }
                while (getNum!=num);
                  
        }
}
其中代码里的int getNum可以为任何你个数吗?没有必要是-1吧,设置成不同的数有什么区别呢?

评分

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

查看全部评分

7 个回复

倒序浏览
因为是do while  先判断 getNum=num?true:false
给一个大于0的数 有可能会与random值 相同。

赋予-1只是为了保险,没别的意思  赋别的数也可以 不过应该>=10

评分

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

查看全部评分

回复 使用道具 举报
import java.util.*;
class Test_2
{
         public static void main(String[] args)
         {
                 Random r=new Random();
                int num=r.nextInt(10);
                Scanner s=new Scanner(System.in);
                int getNum=-1;//给getNum赋的值只要不再你设置的随机数范围内即可,就是不包括0~10就行!!
                int count=3;
                 do
                 {
                         getNum=s.nextInt();//扫描控制台上的信息
                        if (getNum<num)
                         {
                                 System.out.println("您猜的数小了");
                         }
                         else if(getNum>num)
                         {
                                 System.out.println("您猜的数大了");
                         }
                         else
                         {
                                 System.out.println("恭喜您猜对了");
                                 break;
                         }
                         count--;
                         if (count==2)
                         {
                                 System.out.println("您还有两次机会");
                         }
                         else if (count==1)
                         {
                                 System.out.println("您还有一次机会");
                         }
                         else
                         {
                                 System.out.println("GAME OVER");
                                 break;
                         }
                 }
                 while (getNum!=num);
                  
         }
}

评分

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

查看全部评分

回复 使用道具 举报
小骗子 发表于 2013-12-30 15:37
因为是do while  先判断 getNum=num?true:false
给一个大于0的数 有可能会与random值 相同。

不对吧,do while会先执行do,而不是先判断,while才是先判断。
回复 使用道具 举报
  1. import java.util.*;
  2. class Test_2
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Random r=new Random();//创建随机数生成对象
  7.                 int num=r.nextInt(10);//调用nextInt(int i);给返回的随机数限定一个范围。
  8.                 Scanner s=new Scanner(System.in);//创建文本扫描器,生成的值是从控制台上扫描的。
  9.                 int getNum=-1;//[color=Red]这里的getNum可以为任意int类型的整数,因为你是do...while,先执行再判断,不管你赋什么初值都会被s.nextInt()覆盖[/color]
  10.                 int count=3;
  11.                 do
  12.                 {
  13.                         getNum=s.nextInt();//扫描控制台上的信息
  14.                         if (getNum<num)
  15.                         {
  16.                                 System.out.println("您猜的数小了");
  17.                         }
  18.                         else if(getNum>num)
  19.                         {
  20.                                 System.out.println("您猜的数大了");
  21.                         }
  22.                         else
  23.                         {
  24.                                 System.out.println("恭喜您猜对了");
  25.                                 break;
  26.                         }
  27.                         count--;
  28.                         if (count==2)
  29.                         {
  30.                                 System.out.println("您还有两次机会");
  31.                         }
  32.                         else if (count==1)
  33.                         {
  34.                                 System.out.println("您还有一次机会");
  35.                         }
  36.                         else
  37.                         {
  38.                                 System.out.println("GAME OVER");
  39.                                 break;
  40.                         }
  41.                 }
  42.                 while (getNum!=num);
  43.                   
  44.         }
  45. }
复制代码
回复 使用道具 举报
颜色居然没变红
import java.util.*;
class Test_2
{
         public static void main(String[] args)
         {
                 Random r=new Random();
                int num=r.nextInt(10);
                Scanner s=new Scanner(System.in);
                int getNum=-1;//给getNum赋的值可以为任意int类型的整数,因为你是do...while,先执行再判断,不管你赋什么初值都会被s.nextInt()覆盖,而不像前两楼所说不能为0-10
                int count=3;
                 do
                 {
                         getNum=s.nextInt();//扫描控制台上的信息
                        if (getNum<num)
                         {
                                 System.out.println("您猜的数小了");
                         }
                         else if(getNum>num)
                         {
                                 System.out.println("您猜的数大了");
                         }
                         else
                         {
                                 System.out.println("恭喜您猜对了");
                                 break;
                         }
                         count--;
                         if (count==2)
                         {
                                 System.out.println("您还有两次机会");
                         }
                         else if (count==1)
                         {
                                 System.out.println("您还有一次机会");
                         }
                         else
                         {
                                 System.out.println("GAME OVER");
                                 break;
                         }
                 }
                 while (getNum!=num);
                  
         }
}
回复 使用道具 举报
getNum的初始值可以随便赋值好吗?do...while()是先执行do,然后再进行判断。
楼主的代码,还没进行while()判断就先让用户输入了一个值来赋给了getNum
回复 使用道具 举报
任亚俊 发表于 2013-12-30 16:52
不对吧,do while会先执行do,而不是先判断,while才是先判断。

额。。。。是我搞错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马