黑马程序员技术交流社区

标题: 《哈尔滨校区》猜字游戏 , 死循环就是用不明白 ... [打印本页]

作者: 王大可    时间: 2015-11-27 23:07
标题: 《哈尔滨校区》猜字游戏 , 死循环就是用不明白 ...
本帖最后由 张研老师 于 2015-12-5 10:38 编辑

import java.util.Scanner;
class GuessNumber_Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = (int)(Math.random()*100+1);
        System.out.println("我想好了,猜一个数字");
        while (true) {
            int gnum = sc.nextInt();
            if (gnum>num) {
                System.out.println("大了");
            }else if (gnum<num) {
                System.out.println("小了");
            }else {
                System.out.println("就是我!");
                break;
            }
        }
    }
}
加上while(true){}可以一直循环,一直玩游戏,加一步判断是否继续游戏,y/n,继续的话输出:我想好了,猜一个数字,否则程序结束
结果做成了这个样子.. "我想好了,猜一个数字,"这句话怎样才能只在游戏开始输出一次呢.

1.png (5.74 KB, 下载次数: 184)

1.png

作者: ^_^笨和尚^_^    时间: 2015-11-27 23:31
妹子你这是在逗人吧!!
作者: 王大可    时间: 2015-11-27 23:49
^_^笨和尚^_^ 发表于 2015-11-27 23:31
妹子你这是在逗人吧!!

没有啊,做蒙了.....
作者: 13277988289    时间: 2015-11-27 23:52
定义在循环外面就是  就只会在程序运行的时候打印一次啊!
作者: 王大可    时间: 2015-11-28 00:12
13277988289 发表于 2015-11-27 23:52
定义在循环外面就是  就只会在程序运行的时候打印一次啊!

定义在外面就只有第一次运行会显示,第二次第三次,就不输出了啊,直接等待录入了呀...
作者: 迷茫不堪的年纪    时间: 2015-11-28 00:37
import java.util.Scanner;

public class Demo33 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("我想好了,猜一个数字");
        while (true) {
                int num = (int)(Math.random()*100+1);
            int gnum = sc.nextInt();
            if (gnum>num) {
                System.out.println("大了");
            }else if (gnum<num) {
                System.out.println("小了");
            }else {
                System.out.println("就是我!");
                break;
            }
        }
    }
}

还有一个问题,留给你发现一下,
作者: 13277988289    时间: 2015-11-28 00:51
我没太搞清楚你要问的是什么,刚又看了下你的问题  好像是要添加一个判断,我在你的代码下面加了几行  你看看是不是这个意思!至于那个"我想好了,猜一个数字,"这句话是只在运行时出现一次还是每次输入之前都要提示呢?下面是代码

import java.util.Scanner;
class GuessNumber_Test
{
    public static void main(String[] args)
        {
        Scanner sc = new Scanner(System.in);
        int num = (int)(Math.random()*100+1);
        System.out.println("我想好了,猜一个数字");
        while (true)
                {
            int gnum = sc.nextInt();
            if (gnum>num)
                        {
                System.out.println("大了");
            }
                        else if (gnum<num)
                        {
                System.out.println("小了");
            }
                        else
                        {
                System.out.println("就是我!");
                break;
            }
                        System.out.println("是否继续游戏,y/n");
                        String str=sc.next();
                        if("y".equals(str)||"Y".equals(str))
                                continue;
                        else if("n".equals(str)||"N".equals(str))
                                break;

        }
    }
}

这个代码你还可以再优化一下,如果在输入数字时输入了  其他字符  会发生异常
作者: Little_jie    时间: 2015-11-28 08:22
你没有逗人吗
我想好了,猜一个数字
50
小了
80
小了
90
大了
85
大了
82
小了
83
就是我!
我不知道怎么上传图片,这是运行结果
作者: hansnowqiang    时间: 2015-11-28 08:35
本帖最后由 hansnowqiang 于 2015-11-28 08:37 编辑

定义一个boolean flag=true
while(flag)
在打印”就是我“之前加flag=false解决问题

作者: 你是对的    时间: 2015-11-28 18:26
笨  放进循环第一句
作者: 奔跑着    时间: 2015-11-29 17:42

作者: 奔跑着    时间: 2015-11-29 17:43
public class Test4 {
        public static void main(String[] args) {
                int  num = new Random().nextInt(100)+1;
                System.out.println("请输入一个数字");
                compareTo(num);
        }

        private static void compareTo(int num) {
               
                int i = new Scanner(System.in).nextInt();
                if(i==num){
                        System.out.println("恭喜你猜对了!");
                }else if(i>num){
                        System.out.println("猜大了!");
                        compareTo(num);
                }else if(i<num){
                        System.out.println("猜小了!");
                        compareTo(num);
                }
        }
}
作者: 子午鼬    时间: 2015-11-30 15:04
只能说妹子好萌
作者: 王大可    时间: 2015-12-2 22:54
13277988289 发表于 2015-11-27 23:52
定义在循环外面就是  就只会在程序运行的时候打印一次啊!

恩恩 ,知道这个 ,我做的这个不是我要的效果而已
作者: 王大可    时间: 2015-12-2 22:56
子午鼬 发表于 2015-11-30 15:04
只能说妹子好萌

不是不是 , 想法多,没实现出来
作者: 王大可    时间: 2015-12-2 22:57
奔跑着 发表于 2015-11-29 17:43
public class Test4 {
        public static void main(String[] args) {
                int  num = new Random().nextInt(100 ...

哎呦不错呦~
作者: 王大可    时间: 2015-12-2 22:58
你是对的 发表于 2015-11-28 18:26
笨  放进循环第一句

那样就每一遍都有拉,
作者: 王大可    时间: 2015-12-2 22:59
hansnowqiang 发表于 2015-11-28 08:35
定义一个boolean flag=true
while(flag)
在打印”就是我“之前加flag=false解决问题

哦哦哦,我试试这个
作者: 王大可    时间: 2015-12-2 23:00
13277988289 发表于 2015-11-28 00:51
我没太搞清楚你要问的是什么,刚又看了下你的问题  好像是要添加一个判断,我在你的代码下面加了几行  你看 ...

我没表达清楚么...嘴太笨了 ....我试一试
作者: 水瓶座    时间: 2015-12-12 22:35
顶一下!!!!!!!!!




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