0

我正在制作一个石头剪刀布程序。我希望程序的用户输入石头、纸或剪刀(因此是导入的扫描仪),并且我希望计算机选择一个随机数(我将导入一个 java.util.Random),它对应于另一个石头、纸,或剪刀。

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

程序中没有错误。但是当我在扫描仪中输入“rock”时,程序什么也没做。我做错了什么,我该如何纠正?

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");

        }
    }
4

3 回答 3

1

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

如果我们申请==比较两个字符串对象,它会比较两个references对象的,所以在你的情况下,引用是不同的,这就是它返回 false 并且System.out.println("yes");没有被打印的原因。

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

于 2012-06-28T05:00:53.420 回答
0

player 和 rock 是 String 对象。在 Java 中,我们没有 String 作为数据类型,如 int、float 等。所以要比较两个对象,我们必须使用 .equals() [来自 Object 类]

于 2012-06-28T05:57:34.313 回答
0

你想要player.equals(rock)if条件。

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

于 2012-06-28T03:41:56.787 回答