gpt4 book ai didi

Java石头剪刀布

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:59 25 4
gpt4 key购买 nike

我知道这里已经一次又一次地询问这个java作业,但是我不想复制其他方法(因为似乎有很多方法可以编写此类代码),我宁愿需要有关矿井的帮助,这样我就可以更轻松地理解这些概念。而且,教授也许很容易检查我是否作弊,哈哈。

这段代码没有错误,但是它没有像预期的那样工作。输出真的是......随机的。

我觉得我错过了一整段代码,但我一遍又一遍地阅读我的教科书,似乎无法发现错误的根源。 :|请帮忙!

编辑:我用固定的更改更新了我的帖子很多。

import java.util.Scanner;

public class RockPaperScissors
{
public static void main(String[] args)
{
String playerTwo = "";\\to be honest I'm not sure what this is even for

Scanner keyboard = new Scanner(System.in);
System.out.println("Lets play rock-paper-scissors! Please enter your move:");

int Choice = (int) (Math.random()*2);
if (Choice == 0)
playerTwo = "ROCK";\\rock = 0
else if (Choice == 1)
playerTwo = "PAPER";\\paper = 1
else if (Choice == 2)
playerTwo = "SCISSORS";\\scissors = 2

String playerOne = keyboard.nextLine();
playerOne = playerOne.toUpperCase();
if (playerOne.equals(playerTwo)){
System.out.println("It's a tie, so nobody wins!");
}

if (playerOne.equals("ROCK")){
if (playerTwo.equals("PAPER")){
System.out.println("Your rock got covered by my paper. You lose!");
}
if (playerTwo.equals("SCISSORS")){
System.out.println("Your rock smashes my scissors. You win!");
}
}

if (playerOne.equals("PAPER")){
if (playerTwo.equals("ROCK")){
System.out.println("Your paper covers my rock. You win!");
}
if (playerTwo.equals("SCISSORS")){
System.out.println("Your paper got cut by my scissors. You lose!");
}
}

else if (playerOne.equals("SCISSORS")){
if (playerTwo.equals("ROCK")){
System.out.println("Your scissors got smashed by my rock. You lose!");
}
if (playerTwo.equals("PAPER")){
System.out.println("Your scissors cut my paper. You win!");
}
}

else
System.out.println("Error. Please restart and enter either: \"rock\", \"paper\", or \"scissors\".");
}
}

最佳答案

在我弄清楚您的代码有什么问题之前,这里有一些建议:

Math.round() 不是必需的。如果您要转换为 int 类型,那么它将自动舍入到最接近的整数。

您应该声明一个包含三种类型结果的枚举。然后您可以通过名称而不是数字或字符串来引用它们:

public enum Outcome { ROCK, PAPER, SCISSOR };

现在您可以分配变量并使用 switch 语句:

Outcome player1 = Outcome.ROCK;
// switch statement example
switch (player1) {
case ROCK:
// do something
case PAPER:
// do something
case SCISSOR:
// do something

此外,注释是用两个正斜杠完成的,而不是反斜杠

现在看看代码中的 WTF 时刻。这到底是什么:

if (playerOne.equals("ROCK")){}
else if (playerTwo.equals("PAPER")){
System.out.println("Your rock got covered by my paper. You lose!");
}
else if (playerTwo.equals("SCISSORS")){
System.out.println("Your scissors got smashed by my rock. You win!");
}

基本上,您只是告诉计算机,如果playerOne 选择摇滚,则不执行任何操作。 if语句的语法如下:

if (condition) {
// do something
}

如果您想在一个 if 语句中包含多个 if 语句,请执行以下操作:

if (condition) {
if (condition) { // do something }
else if (condition) { // do something else if first did not work }
else { // do something if nothing worked }
}

在您的代码中输入以下内容:

if (condition) {} // this does nothing if condition is true
else if (condition) {...} // if the first if statement is true, this will not be reached
else if (condition) {...} // neither will this!

因此,要解决您的问题,您的代码片段需要如下所示:

if (playerOne.equals("ROCK")) {
if (playerTwo.equals("PAPER")) {
System.out.println("Your rock got covered by my paper. You lose!");
}
else if (playerTwo.equals("SCISSORS")) {
System.out.println("Your scissors got smashed by my rock. You win!");
}
} // terminates outer if

如果您还有其他问题,请对此答案发表评论!

关于Java石头剪刀布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com