Java 爪哇:石头、布、剪刀几乎完成了,但有一个致命的错误
我受够了。我想保留删除,直到我提交我的项目。我不愿意被指责抄袭我自己的代码Java 爪哇:石头、布、剪刀几乎完成了,但有一个致命的错误,java,Java,我受够了。我想保留删除,直到我提交我的项目。我不愿意被指责抄袭我自己的代码 请尊重这一点,不要还原。在if语句之后有多个命令,但缺少{}。 例如: else if (compActual.equals("R")) if (userOriginal.equals("S")) { System.out.println("You played Scissors and I chose Rock: Rock crushes Sci
请尊重这一点,不要还原。在if语句之后有多个命令,但缺少{}。 例如:
else if (compActual.equals("R"))
if (userOriginal.equals("S"))
{
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
if (userOriginal.equals("P"))
{
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
应该是:
else if (compActual.equals("R"))
{
if (userOriginal.equals("S"))
{
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
if (userOriginal.equals("P"))
{
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
}
而且,我很抱歉地说,您的代码需要清理。例如,您使用的是toUpperCase(),因此无需与小写输入进行比较。在if语句之后有多个命令,但缺少{}。 例如:
else if (compActual.equals("R"))
if (userOriginal.equals("S"))
{
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
if (userOriginal.equals("P"))
{
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
应该是:
else if (compActual.equals("R"))
{
if (userOriginal.equals("S"))
{
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
if (userOriginal.equals("P"))
{
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
}
而且,我很抱歉地说,您的代码需要清理。例如,您使用的是toUpperCase(),因此无需与小写输入进行比较。正如建议的那样,您应该稍微清理一下代码。为什么不使用数值而不是字符串进行比较,如下所示:
int compVal = (int) (3 * Math.random()) + 1;
int userOriginal = 0;
String userInput = (keyboard.nextLine().toUpperCase());
switch (userInput) {
case "R":
userOriginal = 1;
break;
case "P":
userOriginal = 2;
break;
case "S":
userOriginal = 3;
break;
default:
System.out.println("Invalid input, please try again!");
System.exit(1); // This will exit the program
}
之后,您可以将用户提供的值与生成的值进行比较:
if (compVal == userOriginal) {
System.out.println("It was a tie!");
} else
{
//R
if (compVal == 1)
{
if (userOriginal == 2) {
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
if (userOriginal == 3) {
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
}
//P
if (compVal == 2)
{
if (userOriginal == 1) {
System.out.println("Your played Rock and I chose Paper: Paper covers rock so I win this time!");
}
if (userOriginal == 3) {
System.out.println("You played Scissors and I chose Paper: Scissors cuts Paper so you win this time!");
}
}
//S
if (compVal == 3)
{
if (userOriginal == 1) {
System.out.println("You played Rock and I chose Sciccors: Rock crushes Scissors so you win this time");
}
if (userOriginal == 2) {
System.out.println("You played Paper and I chose Scissors: Paper is cut by Scissors so I win this time!");
}
}
}
此外,请记住始终关闭您使用的所有资源:
keyboard.close();
正如建议的那样,您应该稍微清理一下代码。为什么不使用数值而不是字符串进行比较,如下所示:
int compVal = (int) (3 * Math.random()) + 1;
int userOriginal = 0;
String userInput = (keyboard.nextLine().toUpperCase());
switch (userInput) {
case "R":
userOriginal = 1;
break;
case "P":
userOriginal = 2;
break;
case "S":
userOriginal = 3;
break;
default:
System.out.println("Invalid input, please try again!");
System.exit(1); // This will exit the program
}
之后,您可以将用户提供的值与生成的值进行比较:
if (compVal == userOriginal) {
System.out.println("It was a tie!");
} else
{
//R
if (compVal == 1)
{
if (userOriginal == 2) {
System.out.println("You played Paper and I chose Rock: Paper covers Rock so you win this time!");
}
if (userOriginal == 3) {
System.out.println("You played Scissors and I chose Rock: Rock crushes Scissors so I win this time!");
}
}
//P
if (compVal == 2)
{
if (userOriginal == 1) {
System.out.println("Your played Rock and I chose Paper: Paper covers rock so I win this time!");
}
if (userOriginal == 3) {
System.out.println("You played Scissors and I chose Paper: Scissors cuts Paper so you win this time!");
}
}
//S
if (compVal == 3)
{
if (userOriginal == 1) {
System.out.println("You played Rock and I chose Sciccors: Rock crushes Scissors so you win this time");
}
if (userOriginal == 2) {
System.out.println("You played Paper and I chose Scissors: Paper is cut by Scissors so I win this time!");
}
}
}
此外,请记住始终关闭您使用的所有资源:
keyboard.close();
第一:您的第一个开关(在UserOriginal值上)应该做什么? 如果是检查值是否正确的方法,您有更好的方法-创建可能值的集合(“R”、“P”、“S”),并根据该集合检查输入:
private static final Collection<String> TYPES = new HashSet<>();
static {
TYPES.add("R");
TYPES.add("P");
TYPES.add("S");
}
private static boolean correctInput(String input) {
TYPES.contains(input.toUpperCase());
}
}首先:第一次切换(在UserOriginal值上)应该做什么? 如果是检查值是否正确的方法,您有更好的方法-创建可能值的集合(“R”、“P”、“S”),并根据该集合检查输入:
private static final Collection<String> TYPES = new HashSet<>();
static {
TYPES.add("R");
TYPES.add("P");
TYPES.add("S");
}
private static boolean correctInput(String input) {
TYPES.contains(input.toUpperCase());
}
}为什么所有的
userOriginal=userOriginal
?我已经为您的代码设置了可读性格式,但在将来,我强烈建议您自己这样做,特别是为代码提供适当的缩进,通常每个块4个空格,并确保同一块上的所有代码都处于相同的缩进级别。格式化是非常重要的,因为如果代码不是标准的可接受格式,它就不是非常可读的,如果它不可读,它就不可理解。我使用useroriging=userOriginal的原因是为了找出是否有来自用户的无效输入。例如如果用户输入q而不是所需的输入,程序将终止。如果用户输入了正确的值,我不知道该怎么说,所以我写了一些什么都不做的东西。我会将其留空,或者更好地使用记录器记录程序的状态,根据日志状态,在需要时记录程序的状态,除了使用你正在做的令人分心的无意义代码之外的任何事情。为什么所有的userOriginal=userOriginal
?我已经格式化了你的代码,以确保可读性,但将来我强烈建议你自己做这件事,特别是给你的代码适当的缩进,通常每个块4个空格,并确保同一块上的所有代码都处于相同的缩进级别。格式化是非常重要的,因为如果代码不是标准的可接受格式,它就不是非常可读的,如果它不可读,它就不可理解。我使用useroriging=userOriginal的原因是为了找出是否有来自用户的无效输入。例如如果用户输入q而不是所需的输入,程序将终止。如果用户输入了正确的值,我不知道该怎么说,所以我写了一些什么都不做的东西。我会将其留空,或者更好地使用记录器记录程序的状态,根据日志状态,在需要时记录程序的状态,除了使用你正在做的那些让人分心的无意义代码之外的任何事情。谢谢你,迈克尔D。这就是我所需要的。对于如何处理无效输入,而不是创建不起任何作用的代码,您还有其他建议吗?例如如果用户输入q而不是所需的输入,程序将终止。如果用户输入了正确的值,我不知道在一个案例之后该说什么,所以我写了一些什么都不做的东西谢谢你,Michael D。这就是我需要的。对于如何处理无效输入,而不是创建不起任何作用的代码,您还有其他建议吗?例如如果用户输入q而不是所需的输入,程序将终止。如果用户输入了正确的值,我不知道在一个案例之后该说什么,所以我写了一些什么也做不了的东西