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

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

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.csdn.net/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;
        }
    }
}
相关文章
相关标签/搜索