Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇:石头、布、剪刀几乎完成了,但有一个致命的错误_Java - Fatal编程技术网

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而不是所需的输入,程序将终止。如果用户输入了正确的值,我不知道在一个案例之后该说什么,所以我写了一些什么也做不了的东西