0

このコードは、私が勝ったか、負けたか、または引き分けであるかどうかを決して出力せず、それを理解できません。hischoice と whichpick の両方が正しく設定されていることは知っていますが、if が機能していないようです。文字列を間違って使用していますか、それとも間違って比較していますか? 私はJavaが初めてなので、何が間違っているのかよくわかりません。

import java.util.Scanner;
import java.util.Random;
public class rps {

public static void main(String[] args) {
    int oppchoice;
    String hischoice = "";
    String whichpick;
    String rock = "rock";
    String paper = "paper";
    String scissors = "scissors";
    Scanner mS = new Scanner(System.in);
    Random mR = new Random();

    System.out.print("Type your choice (rock/paper/scissors): ");
    whichpick = mS.nextLine();

    oppchoice = mR.nextInt(3) + 1;
    if (oppchoice == 1) {
        hischoice = rock;
    }
    if (oppchoice == 2) {
        hischoice = paper;
    }
    if (oppchoice == 3) {
        hischoice = scissors;
    }
    System.out.println(hischoice);

    if ((hischoice == rock) && (whichpick == paper)) {
        System.out.println("You win! :)");
    }
    if ((hischoice == paper) && (whichpick == scissors)) {
        System.out.println("You win! :)");
    }
    if ((hischoice == scissors) && (whichpick == rock)) {
        System.out.println("You win! :)");
    }
    if ((hischoice == rock) && (whichpick == scissors)) {
        System.out.println("You lose! :(");
    }
    if ((hischoice == paper) && (whichpick == rock)) {
        System.out.println("You lose! :(");
    }
    if ((hischoice == scissors) && (whichpick == paper)) {
        System.out.println("You lose! :(");
    }
    if ((hischoice == rock) && (whichpick == rock)) {
        System.out.println("It's a tie! :|");
    }
    if ((hischoice == scissors) && (whichpick == scissors)) {
        System.out.println("It's a tie! :|");
    }
    if ((hischoice == paper) && (whichpick == paper)) {
        System.out.println("It's a tie! :|");
    }
}   

}

4

3 に答える 3

2

オペレーターは、==2 つのオブジェクトがまったく同じオブジェクトであるかどうかを確認します。2 つの文字列は異なるオブジェクトですが、値は同じです (まったく同じ文字が含まれています)。そのため、いずれか.equals()のメソッドを使用して文字列が等しいかどうかを比較するか、メソッドを使用し.compareTo()て等しくない比較をテストします。この場合、 で作業する方が簡単.equals()です。

だからここにそれが行われるべき方法があります

if ((hischoice.equals(rock)) && (whichpick.equals(rock))) {
        System.out.println("It's a tie! :|");
    }
于 2012-08-03T00:20:28.637 に答える
1

残りの答えは正しいです。equals メソッドを使用して、2 つの String オブジェクトまたはその他のオブジェクトを比較する必要があります。

これらの if ステートメントを次のように 1 に圧縮することもお勧めします。

if ((hischoice.equals(rock)) && (whichpick.equals(rock))) {
        System.out.println("It's a tie! :|");
    }
    if ((hischoice.equals(scissors)) && (whichpick.equals(scissors))) {
        System.out.println("It's a tie! :|");
    }
    if((hischoice.equals(paper)) && (whichpick.equals(paper))){
        System.out.println("It's a tie! :|");
    }

以下に:

if (hischoice.equals(whichpick )) {
    System.out.println("It's a tie! :|");
}
于 2012-08-03T01:33:57.223 に答える
0

文字列比較には . equals() を使用する必要があります

于 2012-08-03T00:12:26.577 に答える