黑马程序员技术交流社区

标题: 关于猜数字代码的疑惑 [打印本页]

作者: 高丽华    时间: 2013-12-30 15:29
标题: 关于猜数字代码的疑惑
本帖最后由 高丽华 于 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吧,设置成不同的数有什么区别呢?
作者: 小骗子    时间: 2013-12-30 15:37
因为是do while  先判断 getNum=num?true:false
给一个大于0的数 有可能会与random值 相同。

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

作者: 汪伟楠    时间: 2013-12-30 15:38
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);
                  
         }
}
作者: 任亚俊    时间: 2013-12-30 16:52
小骗子 发表于 2013-12-30 15:37
因为是do while  先判断 getNum=num?true:false
给一个大于0的数 有可能会与random值 相同。

不对吧,do while会先执行do,而不是先判断,while才是先判断。
作者: taoge    时间: 2013-12-30 21:10
  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. }
复制代码

作者: taoge    时间: 2013-12-30 21:13
颜色居然没变红
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);
                  
         }
}
作者: 浮出一个美    时间: 2013-12-30 22:39
getNum的初始值可以随便赋值好吗?do...while()是先执行do,然后再进行判断。
楼主的代码,还没进行while()判断就先让用户输入了一个值来赋给了getNum
作者: 小骗子    时间: 2013-12-31 08:21
任亚俊 发表于 2013-12-30 16:52
不对吧,do while会先执行do,而不是先判断,while才是先判断。

额。。。。是我搞错了




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