鱼C论坛

 找回密码
 立即注册
查看: 2151|回复: 4

[已解决]为什么这个程序不会执行 if else 语句中的内容

[复制链接]
发表于 2022-9-6 09:26:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
package com.company;

import java.util.Scanner;
import java.util.Random;
import java.util.*;
public class Main {

    public static void main(String[] args) {
        System.out.println("程序已启动");
        System.out.println("剪刀\t石头\t布");
        int a=0;
        for(int i=1;i<=5;i++)
        {
            System.out.println("第"+i+"局");
            Scanner scanner1=new Scanner(System.in);
            String s = scanner1.nextLine();
            int randomNumber=new Random().nextInt(3);

            //1 代表石头 2 代表剪刀 3 代表布

            switch (randomNumber+1) {
                case(1)://石头
                {
                    System.out.println("电脑本次出的是石头");
                    if (s == "石头") {
                        System.out.println("打平了");
                    }
                    else if (s == "剪刀") {
                        System.out.println("赢了");
                        a++;
                    } else if (s == "布") {
                        System.out.println("输了");
                        a--;
                    }
                    break;
                }
                case(2)://剪刀
                {
                    System.out.println("电脑本次出的是剪刀");
                    if (s=="石头") {
                        System.out.println("输了");
                        a--;
                    }
                    else if (s=="剪刀"){
                        System.out.println("打平了");
                        }
                    else if(s=="布"){
                        System.out.println("赢了");
                        a++;
                    }
                    break;
                }

                case(3)://布
                {
                    System.out.println("电脑本次出的是布");
                    if (s=="石头")
                    {
                        System.out.println("赢了");
                        a++;
                    }
                    else if (s=="剪刀"){
                        System.out.println("输了");
                        a--;}
                    else if(s=="布"){
                        System.out.println("打平了");

                    }
                    break;
                }

            }


        }
        if(a>0)
            System.out.println("本次游戏胜利");
        else if(a==0)
            System.out.println("本次游戏平局");
        else if(a<0)
            System.out.println("本次游戏失败");

        // write your code here
    }
}
运行结果:


程序已启动
剪刀        石头        布
第1局
石头
电脑本次出的是石头
第2局
石头
电脑本次出的是布
第3局
石头
电脑本次出的是石头
第4局
石头
电脑本次出的是布
第5局
石头
电脑本次出的是剪刀
本次游戏平局

进程已结束,退出代码为 0
最佳答案
2022-9-6 09:41:32


字符串不能使用 == 直接进行判断

== 判断的是地址值是否相等,判断字符串是否相等应该使用 equals()

而且建议将已知字符串写为 equals 的调用对象,例如 "石头".equals(s) ,这样能有效避免空指针异常

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-6 09:37:06 | 显示全部楼层


将你代码中字符串判断都改成 equals() 了,你再测试看看:

  1. import java.util.Scanner;
  2. import java.util.Random;

  3. public class Main {

  4.     public static void main(String[] args) {
  5.         System.out.println("程序已启动");
  6.         System.out.println("剪刀\t石头\t布");
  7.         int a = 0;
  8.         for (int i = 1; i <= 5; i++) {
  9.             System.out.println("第" + i + "局");
  10.             Scanner scanner1 = new Scanner(System.in);
  11.             String s = scanner1.nextLine();
  12.             int randomNumber = new Random().nextInt(3);

  13.             //1 代表石头 2 代表剪刀 3 代表布

  14.             switch (randomNumber + 1) {
  15.                 case (1)://石头
  16.                 {
  17.                     System.out.println("电脑本次出的是石头");
  18.                     if ("石头".equals(s)) {
  19.                         System.out.println("打平了");
  20.                     } else if ("剪刀".equals(s)) {
  21.                         System.out.println("赢了");
  22.                         a++;
  23.                     } else if ("布".equals(s)) {
  24.                         System.out.println("输了");
  25.                         a--;
  26.                     }
  27.                     break;
  28.                 }
  29.                 case (2)://剪刀
  30.                 {
  31.                     System.out.println("电脑本次出的是剪刀");
  32.                     if ("石头".equals(s)) {
  33.                         System.out.println("输了");
  34.                         a--;
  35.                     } else if ("剪刀".equals(s)) {
  36.                         System.out.println("打平了");
  37.                     } else if ("布".equals(s)) {
  38.                         System.out.println("赢了");
  39.                         a++;
  40.                     }
  41.                     break;
  42.                 }

  43.                 case (3)://布
  44.                 {
  45.                     System.out.println("电脑本次出的是布");
  46.                     if ("石头".equals(s)) {
  47.                         System.out.println("赢了");
  48.                         a++;
  49.                     } else if ("剪刀".equals(s)) {
  50.                         System.out.println("输了");
  51.                         a--;
  52.                     } else if ("布".equals(s)) {
  53.                         System.out.println("打平了");

  54.                     }
  55.                     break;
  56.                 }

  57.             }


  58.         }
  59.         if (a > 0)
  60.             System.out.println("本次游戏胜利");
  61.         else if (a == 0)
  62.             System.out.println("本次游戏平局");
  63.         else System.out.println("本次游戏失败");

  64.         // write your code here
  65.     }
  66. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-6 09:41:32 | 显示全部楼层    本楼为最佳答案   


字符串不能使用 == 直接进行判断

== 判断的是地址值是否相等,判断字符串是否相等应该使用 equals()

而且建议将已知字符串写为 equals 的调用对象,例如 "石头".equals(s) ,这样能有效避免空指针异常

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-9-6 11:41:18 | 显示全部楼层
Twilight6 发表于 2022-9-6 09:37
将你代码中字符串判断都改成 equals() 了,你再测试看看:

谢谢啦 之前一直不知道怎么办呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 14:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表