我知道这一次又一次地被问到这个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
如果您还有其他问题,请对此答案发表评论!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句