Per-aspera-ad-astra 2022-01-12 08:45 采纳率: 100%
浏览 112
已结题

我这做了一个很简单的猜数字游戏,程序它还有点小瑕疵,求改进

问题遇到的现象和发生背景

大二学生做的简单程序,遇到的难题,解答

问题相关代码
package just;
import java.util.Scanner;
class G{
    static int re=-1;
     public void G(){
         int n=(int)(Math.random()*10000);
        int n1=n/1000,n2=n/100%10,n3=n/10%10,n4=n%10;
        while(n1==n2||n1==n3||n1==n4||n2==n3||n2==n4||n3==n4){
            n=(int)(Math.random()*10000);
        }
        System.out.println("Start The Game");
        int se=1,gn;
        while(se!=0){
        Scanner build=new Scanner(System.in);
        System.out.println("请输入你猜测的四位数");
        gn=build.nextInt();
        while(gn<1000||gn>9999){
            System.out.println("输入错误,请重新输入1个4位数:");
            gn=build.nextInt();
        }
        int g1=gn/1000,g2=gn/100%10,g3=gn/10%10,g4=gn%10;
        int b=0,a=0;
        while(g1==g2||g1==g3||g1==g4||g2==g3||g2==g4||g3==g4){
            System.out.println("有重复数字,请重新输入:");
            gn=build.nextInt();
            g1=(gn/1000);g2=(gn/100%10);g3=(gn/10%10);g4=(gn%10);
        }
        if(g1==n1){
            a++;
        }else  if(g1==n2||g1==g3||g1==g4){
                b++;
              }
        
        if(g2==n2){
            a++;
        }else  if(g2==n1||g2==n3||g2==n4){
                b++;
            }
        
         if(g3==n3){
             a++;
         }else if(g3==n1||g3==n2||g3==n4){
                 b++;
             }
         
         if(g4==n4){
           a++;
         }else if(g4==n2||g4==n3||g4==n4){
                     b++;
             }
         if(a==4){
             System.out.println("锣鼓喧天,鞭炮齐鸣     您猜对啦!!!");
             System.out.println("是否继续游戏(退出请输入0)");
             re=build.nextInt();
             if(re==0&&re!=-1){
                 break;
             }else{
                    new G();
                    G.re=-1;
                }
         }
         else
         {
         System.out.println(a+"A"+b+"B");
         System.out.println("是否继续游戏(退出请输入0)");
         se=build.nextInt();
         }
        }    
     }
}
public class guess {
    public static void main(String[] args) {
        G g=new G();
        g.G();
    }
}

运行结果的瑕疵

img

我想要达到的结果

解决上面截图中,在输入时同样的四个数只是位置不同,但是却出现结果的偏差的问题

  • 写回答

5条回答 默认 最新

  • CSDN专家-sinJack 2022-01-12 09:05
    关注
    import java.util.Scanner;
    class G{
        static int re=-1;
        public void G(){
            int n=(int)(Math.random()*10000);
            int n1=n/1000,n2=n/100%10,n3=n/10%10,n4=n%10;
            while(n1==n2||n1==n3||n1==n4||n2==n3||n2==n4||n3==n4){
                n=(int)(Math.random()*10000);
                n1=n/1000;
                n2=n/100%10;
                n3=n/10%10;
                n4=n%10;
            }
            System.out.println("Start The Game");
            int se=1,gn;
            while(se!=0){
                Scanner build=new Scanner(System.in);
                System.out.println("请输入你猜测的四位数");
                gn=build.nextInt();
                while(gn<1000||gn>9999){
                    System.out.println("输入错误,请重新输入1个4位数:");
                    gn=build.nextInt();
                }
                int g1=gn/1000,g2=gn/100%10,g3=gn/10%10,g4=gn%10;
                int b=0,a=0;
                while(g1==g2||g1==g3||g1==g4||g2==g3||g2==g4||g3==g4){
                    System.out.println("有重复数字,请重新输入:");
                    gn=build.nextInt();
                    g1=(gn/1000);g2=(gn/100%10);g3=(gn/10%10);g4=(gn%10);
                }
                System.out.println(g1+"  "+g2+"   "+g3+"   "+g4);
                if(g1==n1){
                    a++;
                }else  if(g1==n2||g1==g3||g1==g4){
                    b++;
                }
    
                if(g2==n2){
                    a++;
                }else  if(g2==n1||g2==n3||g2==n4){
                    b++;
                }
    
                if(g3==n3){
                    a++;
                }else if(g3==n1||g3==n2||g3==n4){
                    b++;
                }
    
                if(g4==n4){
                    a++;
                }else if(g4==n2||g4==n3||g4==n1){
                    b++;
                }
                if(a==4){
                    System.out.println("锣鼓喧天,鞭炮齐鸣     您猜对啦!!!");
                    System.out.println("是否继续游戏(退出请输入0)");
                    re=build.nextInt();
                    if(re==0&&re!=-1){
                        break;
                    }else{
                        new G();
                        G.re=-1;
                    }
                }
                else
                {
                    System.out.println(a+"A"+b+"B");
                    System.out.println("是否继续游戏(退出请输入0)");
                    se=build.nextInt();
                }
            }
        }
    }
    public class guess {
        public static void main(String[] args) {
            G g=new G();
            g.G();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月20日
  • 已采纳回答 1月12日
  • 修改了问题 1月12日
  • 修改了问题 1月12日
  • 展开全部

悬赏问题

  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来