Java关于将单词设置为变量的问题

Java关于将单词设置为变量的问题,java,Java,我正在制作一个石头剪刀程序。我希望程序的用户输入岩石、纸张或剪刀(因此输入了扫描仪),并希望计算机选择一个与另一块岩石、纸张或剪刀相对应的随机数(我将输入java.util.random) 所以我试图让程序把一个单词识别为有意义的东西。也就是说,如果用户在扫描仪中输入“rock”,计算机将进行一些输出。在下面的代码中,如果用户输入“rock”,我试图让计算机输出“yes”。为此,我将一个名为“player”的变量设置为输入文本,将一个字符串rock设置为短语“rock”。然后我说如果player

我正在制作一个石头剪刀程序。我希望程序的用户输入岩石、纸张或剪刀(因此输入了扫描仪),并希望计算机选择一个与另一块岩石、纸张或剪刀相对应的随机数(我将输入java.util.random)

所以我试图让程序把一个单词识别为有意义的东西。也就是说,如果用户在扫描仪中输入“rock”,计算机将进行一些输出。在下面的代码中,如果用户输入“rock”,我试图让计算机输出“yes”。为此,我将一个名为“player”的变量设置为输入文本,将一个字符串rock设置为短语“rock”。然后我说如果player=rock(“rock”),那么我们会得到“yes”

程序中没有错误。但当我把“岩石”输入扫描仪时,程序什么也没做。我做错了什么?我如何纠正它

import java.util.Scanner;

public class Refined {

    public static void main(String[] args){
        Scanner abc = new Scanner(System.in);
        String rock = "rock";

        String player;
        System.out.println("Rock, Paper, or Scissors?");
        player = abc.next();
        if(player == rock){
            System.out.println("yes");

        }
    }

您需要
if
条件下的
player.equals(rock)

放置
player==rock
比较
String
对象(基本上是内存中的引用是否指向同一点),而不是
String
对象中实际存储的值。

使用
player.equals(rock)
player.equalsIgnoreCase(rock)
来比较这两个变量的内容

如果我们应用
==
来比较两个字符串对象,它会比较两个对象的
引用
,因此在您的情况下,引用是不同的,这就是它返回false和
System.out.println(“yes”)的原因未被打印


使用
String.equals()
String.equalsIgnoreCase()
方法比较字符串的内容。

播放器和摇滚乐是字符串对象。在Java中,我们没有字符串作为数据类型,如int、float等。因此,要比较两个对象,我们必须使用.equals()[来自对象类]

有很多重复项。。。搜索“java字符串等于”