0

じゃんけんプログラムを作っています。プログラムのユーザーに岩、紙、またははさみ(したがってインポートされたスキャナー)のいずれかを入力してもらい、コンピューターに別の岩、紙に対応する乱数(java.util.Randomをインポートします)を選択させます、またははさみ。

だから私はプログラムに単語を何か重要なものとして認識させようとしています。つまり、ユーザーがスキャナーに「ロック」と入力すると、コンピューターは何らかの出力を行います。以下のコードでは、ユーザーが「rock」と入力した場合に、コンピューターに「yes」を出力させようとしました。これを行うには、「player」という変数を入力テキストに設定し、Stringrockをフレーズ「rock」に設定します。次に、player = 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)orを使用player.equalsIgnoreCase(rock)して、両方の変数の内容を比較します

==2 つの文字列オブジェクトを比較する場合はreferences、両方のオブジェクトを比較するため、参照が異なるため、false が返さSystem.out.println("yes");れ、印刷されません。

String.equals()またはメソッドを使用String.equalsIgnoreCase()して、文字列の内容を比較します。

于 2012-06-28T05:00:53.420 に答える
0

あなたplayer.equals(rock)はそのif状態で欲しいです。

パッティングは、オブジェクトに実際に格納されている値ではなく、オブジェクト(基本的にメモリ内の参照が同じ場所を指しているかどうか)をplayer == rock比較します。StringString

于 2012-06-28T03:41:56.787 に答える
0

player と rock は String オブジェクトです。Java では、int、float などのように、データ型として String はありません。したがって、2 つのオブジェクトを比較するには、.equals() を使用する必要があります [これは Object クラスに由来します]。

于 2012-06-28T05:57:34.313 に答える