4
import java.util.Scanner;
public class RockPaperScissors
 {
public static void main (String[] args)
{
    Scanner scan = new Scanner (System.in);
    System.out.println("Player 1: Choose rock, paper or scissors: ");
    String Player1 = scan.next().toLowerCase();
    System.out.println("Player 2: Choose rock, paper or scissors: ");
    String Player2 = scan.next().toLowerCase();
    System.out.println ("Player 1 chose " + Player1);
    System.out.println ("Player 2 chose " + Player2);

    if (Player1.!equals("rock" + "paper" + "scissors")
    {
        System.out.println ("Please insert either Rock Paper or Scissors!);
    }
    if (Player1.equals(Player2))
    {
        System.out.println ("Its a tie!");
    }
    if ((Player1.equals("rock")) && (Player2.equals("paper")))
    {
        System.out.println ("Player 2 wins!");
    }
    else if ((Player1.equals("paper")) && (Player2.equals("rock")))
    {
        System.out.println ("Player 1 wins!");
    }
    if ((Player1.equals("scissors")) && (Player2.equals("paper")))
    {
        System.out.println ("Player 1 wins!");
    }
    else if ((Player1.equals("paper")) && (Player2.equals("scissors")))
    {
        System.out.println ("Player 2 wins!");
    }
    if ((Player1.equals("rock")) && (Player2.equals("scissors")))
    {
        System.out.println ("Player 1 wins!");
    }
    else if ((Player1.equals("scissors")) && (Player2.equals("rock")))
    {
        System.out.println ("Player 2 wins!");
    }


}

}

簡単なじゃんけんゲームを作りましたが、じゃんけん以外のものを入力するとユーザーに通知されるように検証を実装したいと思います。私はうまくいきましたが、期待どおり.!equalsと言ってエラーが発生しました<identifier>

ありがとう!

4

5 に答える 5

10

間違った構文:

Player1.!equals

への変更:

!Player1.equals
于 2012-10-29T12:33:58.623 に答える
4

正しい構文は次のとおりです。

if (!Player1.equals("rock" + "paper" + "scissors"))

とにかく、これはあなたの目的には役立ちません。次のようにする必要があります。

if (!Player1.equals("rock") 
    && !Player1.equals("paper") 
    && !Player1.equals("scissors"))

または同等のもの

if (!(Player1.equals("rock")
    || Player1.equals("paper") 
    || Player1.equals("scissors")))

+演算子は文字列を連結するため、比較することになりPlayer1ます"rockpaperscissors"


補足として、次のことを行う必要があります。

  • Java の規則を尊重し、var 名を小文字 (player1ではなくPlayer1)で始めます。
  • 固定文字列を定数に抽出します(private static final String PAPER = "paper";クラス属性として)
  • (を使用して).equals()を回避するために、可能な場合は定数で呼び出すNullPointerExceptionPAPER.equals(player1)

全体として、コードは次のようになります。

if (!ROCK.equals(player1) 
    && !PAPER.equals(player1) 
    && !SCISSORS.equals(player1))
于 2012-10-29T12:33:52.013 に答える
1

このようにしてみてください:

  if (!Player1.equals("rock" + "paper" + "scissors")
{
    System.out.println ("Please insert either Rock Paper or Scissors!);
}
于 2012-10-29T12:33:50.567 に答える
1

あなたのコードはコンパイルさえしません。次のようなものが必要です:

if (!Player1.equals("rock") && !Player1.equals("paper") && !Player1.equals("scissors")) {
   System.out.println ("Please insert either Rock Paper or Scissors!);
}
于 2012-10-29T12:35:13.507 に答える
1

構文に加えて、テストは論理的に間違っています。これ:

if (!Player1.equals("rock" + "paper" + "scissors")) {

これと同じ考えを意味します:

if (!Player1.equals("rockpaperscissors")) {

本当に必要なのは次のようなものです。

if (!(Player1.equals("rock") || 
      Player1.equals("paper") || 
      Player1.equals("scissors"))) {

...そして残りのロジックも少し壊れています。


最後に、 andはそれぞれ andであるべきだPlayer1と指摘しておきます。変数名は大文字で始めるべきではありません。それは大きな文体のノーノーです。Player2player1player2

于 2012-10-29T12:36:51.480 に答える