剪刀石头布

import java.util.Scanner;

/**

 * @author heartFade

 * @create 2023-10-30 13:34

 */

public class demoGame {

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入你的名字");

        String name=scanner.nextLine();

        System.out.println("请选择你的对手");

        System.out.println("1.菠萝吹雪");

        System.out.println("2.橙留香");

        String opposite = scanner.next();//定义选择的对手序号

        String oppositeName;

        if(opposite.equals("1")){

            oppositeName="菠萝吹雪";

        }else if(opposite.equals("2")){

            oppositeName="橙留香";

        }else oppositeName="匿名用户";

while(true){

        System.out.println("请输入你的选择");

        System.out.println("1.石头");

        System.out.println("2.剪刀");

        System.out.println("3.布");

        String option = scanner.next();

        String []n=new String[3];

        n[0]="石头";

        n[1]="剪刀";

        n[2]="布";

//        int computerOption = (int)((Math.random()*2+1));//先用Math.round取[0,1)的随机数再乘以二变为[0,2)在加一取到[1,3)

        int computerOption=(int)(Math.random()*3);

        String computerOptionToStr=computerOption+"";//将数字转化为字符串

        if((computerOptionToStr.equals("0")&&option.equals("2"))||(computerOptionToStr.equals("1")&&option.equals("3"))

                ||(computerOptionToStr.equals("2")&&option.equals("1")))//电脑赢

        {

            System.out.println("你"+name+"输了你出的是:"+n[Integer.parseInt(option)-1]);

            System.out.println("电脑"+oppositeName+"赢了出的是:"+n[computerOption]);

        }

        else if((computerOptionToStr.equals("1")&&option.equals("1"))||(computerOptionToStr.equals("2")&&option.equals("2"))

                ||(computerOptionToStr.equals("0")&&option.equals("3")))

        {

            System.out.println("你"+name+"赢了你出的是:"+n[Integer.parseInt(option)-1]);

            System.out.println("电脑"+oppositeName+"输了出的是:"+n[computerOption]);

        }else {

            System.out.println("平手出的是"+n[computerOption]);

        }

   //*************************以上概率有问题电脑出二的几率明显大

    //应该把   int computerOption = (int)((Math.random()*2+1));改为int computerOption=(int)(Math.random()*3)

    }}

}

import java.util.Scanner;

/**

 * @author heartFade

 * @create 2023-10-30 14:52

 */

public class demoGame1 {

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入你的名字");

        String name=scanner.nextLine();

        System.out.println("请选择你的对手");

        System.out.println("1.菠萝吹雪");

        System.out.println("2.橙留香");

        String opposite = scanner.next();//定义选择的对手序号

        String oppositeName;

        if(opposite.equals("1")){

            oppositeName="菠萝吹雪";

        }else if(opposite.equals("2")){

            oppositeName="橙留香";

        }else oppositeName="匿名用户";

      while (true){

            System.out.println("请输入你的选择");

            System.out.println("1.石头");

            System.out.println("2.布");

            System.out.println("3.剪刀");

            String option = scanner.next();

            int optionNumber=Integer.parseInt(option)-1;//减一是为了保持一致

            String []n=new String[3];

            n[0]="石头";

            n[1]="布";

            n[2]="剪刀";

//        int computerOption = (int)((Math.random()*2+1));//先用Math.round取[0,1)的随机数再乘以二变为[0,2)在加一取到[1,3)

            int computerOption=(int)(Math.random()*3);

          if(computerOption-optionNumber==1||computerOption-optionNumber==-2)//电脑赢

          {

              System.out.println(oppositeName+"赢他出了:"+n[computerOption]);

              System.out.println(name+"输了出了:"+n[optionNumber]);

          }

          else if(computerOption-optionNumber==-1||computerOption-optionNumber==2)

          {

              System.out.println(oppositeName+"输他出了:"+n[computerOption]);

              System.out.println(name+"赢了出了:"+n[optionNumber]);

          }else{

              System.out.println("出了"+n[computerOption]);

              System.out.println("我除了"+n[optionNumber]);

          }

            //*************************以上概率有问题电脑出二的几率明显大

            //应该把   int computerOption = (int)((Math.random()*2+1));改为int computerOption=(int)(Math.random()*3)

        }}

    }

通过执行javap -c xx.class文件 if语句过多会导致代码执行的效率变低

改成switch经过javap 的反编译

先进行hashcode的地址计算,是一个顺序结构

Switch直接去找条件而不是像if一样去一个一个判断效率提高了

import java.util.Scanner;

/**

 * @author heartFade

 * @create 2023-10-30 15:28

 */

public class demoGame2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入你的名字");

        String name = scanner.nextLine();

        System.out.println("请选择你的对手");

        System.out.println("1.菠萝吹雪");

        System.out.println("2.橙留香");

        String opposite = scanner.next();//定义选择的对手序号

        String oppositeName;

//        if (opposite.equals("1")) {

//            oppositeName = "菠萝吹雪";

//        } else if (opposite.equals("2")) {

//            oppositeName = "橙留香";

//        } else oppositeName = "匿名用户";

        switch (opposite)

        {

            case "1":oppositeName="菠萝吹雪";break;

            case "2":oppositeName="橙留香";break;

            default:oppositeName="匿名用户";

        }

        while (true) {

            System.out.println("请输入你的选择");

            System.out.println("1.石头");

            System.out.println("2.布");

            System.out.println("3.剪刀");

            String option = scanner.next();

            int optionNumber = Integer.parseInt(option) - 1;//减一是为了保持一致

            String[] n = new String[3];

            n[0] = "石头";

            n[1] = "布";

            n[2] = "剪刀";

//        int computerOption = (int)((Math.random()*2+1));//先用Math.round取[0,1)的随机数再乘以二变为[0,2)在加一取到[1,3)

            int computerOption = (int) (Math.random() * 3);

//            if (computerOption - optionNumber == 1 || computerOption - optionNumber == -2)//电脑赢

//            {

//                System.out.println(oppositeName + "赢他出了:" + n[computerOption]);

//                System.out.println(name + "输了出了:" + n[optionNumber]);

//            } else if (computerOption - optionNumber == -1 || computerOption - optionNumber == 2) {

//                System.out.println(oppositeName + "输他出了:" + n[computerOption]);

//                System.out.println(name + "赢了出了:" + n[optionNumber]);

//            } else {

//                System.out.println("出了" + n[computerOption]);

//                System.out.println("我除了" + n[optionNumber]);

//            }

            switch (computerOption-optionNumber)

            {

                case -2:System.out.println(oppositeName + "赢他出了:" + n[computerOption]);

                    System.out.println(name + "输了出了:" + n[optionNumber]);break;

                case -1:System.out.println(oppositeName + "输他出了:" + n[computerOption]);

              System.out.println(name + "赢了出了:" + n[optionNumber]);break;

                case 1: System.out.println(oppositeName + "赢他出了:" + n[computerOption]);

               System.out.println(name + "输了出了:" + n[optionNumber]);break;

                case 2:   System.out.println(oppositeName + "输他出了:" + n[computerOption]);

             System.out.println(name + "赢了出了:" + n[optionNumber]);break;

                default:

                    System.out.println("平手出了" + n[computerOption]);

            }

        }

    }

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值