猜数字游戏(加了点注释,方便自己理解)

本文介绍了一个简单的Java猜数字游戏程序,使用JOptionPane显示对话框,引导用户输入猜测的数字并与随机生成的数字进行比较。文章详细展示了如何通过循环让用户有多次猜测的机会,并提供了错误输入的处理方法。

原作者博客地址:https://my.oschina.net/u/3823949/blog/1795895

import javax.swing.Icon;

//JOptionPane 显示包含文本、按钮等的标准对话框,它是用来编写图形用户界面的一个类
import javax.swing.JOptionPane;

public class CNumber {
    public static void main(String[] args) {
        Icon icon = null;
        boolean bl = false;
        int put = 0;
        int c = (int) (((Math.random())*100)+1);  //获取一个1-100的随机数
        System.out.println("你获取的随机数是:"+c);  //打印你的随机数字

        //方法原型:JOptionPane.showInputDialog(null, text, title,value)
        //JOptionPane.showInputDialog方法返回用户输入的字符串。
        //显示在输入对话框中的标题、消息及图标等由传递给该方法的参数确定
        // 参数text是要在输入对话框中显示的字符串
        // 参数title是要在输入对话框的标题栏中显示的字符串
        // 参数value为要显示的图标,值为JOptionPane类常量。
        // 第1个参数的值为null表示对话框显示在屏幕中央。
        //具体可参考 https://blog.youkuaiyun.com/changjiale110/article/details/78867779
        String str1  = (String) JOptionPane.showInputDialog(null,"请输入你的猜测数字(1-100):\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入"); //第一次输入你的猜测数字
        if(str1==null){
            JOptionPane.showMessageDialog(null, "你已经取消了本次游戏"); //如果你点取消那么本次游戏结束
        }else{
            bl = num(str1);  //判断是输入的是不是数字或者是整数
            if(true==bl){      //如果是数字的话进入与随机数比较的程序
                System.out.println("你输入的数字是:"+str1);  //打印你输入的数字

                //调用Integer类中的静态方法valueOf(String)
                //valueOf方法将传入的参数String转化为int型值
                //返回该值,如果String并不是纯粹由数字构成即无法转化为数字,则抛出NumberFormatException..
                put = Integer.valueOf(str1);
                for(int i = 4;i > 0;i--){    //i是你可以猜测的次数
                    if(put==c){
                        JOptionPane.showMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。");  //如果你猜对了就直接结束循环
                        break;
                    }else if(put>c){  //如果输大了就让你再次从新输入
                        str1  = (String) JOptionPane.showInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
                        if(str1==null){
                            JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
                            break;
                        }else{
                            bl =num(str1);
                            if(true==bl){
                                put = Integer.valueOf(str1);
                            }else{
                                JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");
                            }
                        }
                    }else if(put<c){  //如果你输小了也让你从新输入
                        str1  = (String) JOptionPane.showInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
                        if(str1==null){
                            JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
                            break;
                        }else{
                            bl =num(str1);
                            if(true==bl){
                                put = Integer.valueOf(str1);
                            }else{
                                JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");
                            }
                        }
                    }
                }
            }else if(bl==false){   //这个是你第一次如果填写的不是数字的话也会结束本次游戏
                JOptionPane.showMessageDialog(null, "请您下次按要求填写。本次游戏结束");

            }
            if(true==bl && c!=put){  //如果你i次都没猜对,那么就直接告诉你这个数十什么
                JOptionPane.showMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+".");
            }
        }
    }

    public  static boolean num(String value){  //一个静态方法,判断你输入的是不是数字
        try {
            //Integer.parseInt(String)就是将String字符类型数据转换为Integer整型数据。
            //Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常。
            Integer.parseInt(value);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}

 

转载于:https://my.oschina.net/u/3841003/blog/1825559

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值