簡體   English   中英

Java中的石頭,紙,剪刀簡單游戲

[英]Rock, paper, scissors simple game in java

嗨,我正在做一個簡單的石頭,紙,剪刀游戲,在獲取比較方法執行時遇到了一些麻煩。 游戲提示用戶進行輸入,然后使用computersTurn方法允許計算機隨機選擇石頭紙或剪刀。 當我嘗試將這兩個值都傳遞給我的compare方法時,它似乎不起作用。 任何建議都很棒!

import java.util.Scanner;



public class sillyGame {

public static void compare (String choice1, String choice2)

{

    if (choice1.equals(choice2))

    {

    System.out.println("The result is a tie!");   

    }



    if (choice1.contains("rock"))

    {
        if (choice2.contains("scissors"))
        {
            System.out.println("rock wins");
        }

        if (choice2.contains("paper"))
        {
            System.out.println("paper wins");
        }
    }   



        if (choice1.contains("scissors"))
    {
        if (choice2.contains("rock"))
        {
            System.out.println("rock wins");
        }

        if (choice2.contains("paper"))
        {
            System.out.println("scissors wins");
        }

    }



    if (choice1.contains("paper"))

    {
        if (choice2.contains("rock"))
        {
            System.out.println("paper wins");
        }

        if (choice2.contains("scissors"))
        {
            System.out.println("scissors wins");
        }

    }




}

public static String computersTurn(String compFinalChoice, double randomNum){

randomNum = Math.random();


    if (randomNum < 0.34) 
    {
        compFinalChoice = "rock";

    } 

    else if(randomNum <= 0.67) 
    {
        compFinalChoice = "paper";

    } 

    else 
    {
        compFinalChoice = "scissors";

    }

       System.out.println("The computer chooses " + compFinalChoice);
      return compFinalChoice;
}



public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    System.out.println("Do you choose rock, paper or scissors?");
    String userChoice = scan.nextLine();
    String computerDec = " ";
    double rand = 0.0;
    computersTurn(computerDec, rand);
    compare(userChoice, computerDec); 
}

您不能從調用方更新字符串(或雙精度字符串),所以我認為您應該重構computersTurn

public static String computersTurn() {
  String choice = "scissors";
  double randomNum = Math.random();
  if (randomNum < 0.34) {
    choice = "rock";
  } else if (randomNum <= 0.67) {
    choice = "paper";
  }
  System.out.println("The computer chooses "
      + choice);
  return choice;
}

然后您可以在main執行類似的操作

String computerDec = computersTurn();

要么

String userChoice = scan.nextLine();
compare(userChoice, computersTurn());

您的computersTurn方法不需要任何參數。 您只需傳遞" "0.0

嘗試將其更改為以下方法:

public static String computersTurn() {

    // declare them here
    double randomNum = Math.random();
    String compFinalChoice = "";

    if (randomNum < 0.34) {
        compFinalChoice = "rock";
    }
    else if(randomNum <= 0.67) {
        compFinalChoice = "paper";
    } 
    else {
        compFinalChoice = "scissors";
    }

    System.out.println("The computer chooses " + compFinalChoice);
    return compFinalChoice;
}

然后在您的main方法中,確保在調用computersTurn()方法時分配給String。 調用它對您沒有任何幫助; 您需要保留返回值:

public static void main(String args[]) 
{
    Scanner scan = new Scanner(System.in);
    System.out.println("Do you choose rock, paper or scissors?");
    String userChoice = scan.nextLine();
    String computerDec = computersTurn(); // assign it here
    compare(userChoice, computerDec);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM