岩纸剪刀计划

时间:2015-09-22 23:58:43

标签: java

我必须为我的班级制作一个非常简单的摇滚,纸张,剪刀游戏。我通常对这些任务很不错,但我现在已经在这个特定的工作中工作了大约8个小时,我知道它不应该花这么长时间而且我必须要错过一些东西。

我们处于课程的早期阶段,我想确保我正确地完成任务。我们已经完成了整数,双精度数,布尔表达式,字符和字符串。我们只需要if if else if语句,这样我就可以避免实现我们尚未在课堂上介绍的技术。

import java.util.Scanner;
public class RPSFinal {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        String user;
        char R, P, S;
        R = '1';
        P = '2';
        S = '3';
        int compInt = (int) (3*Math.random())+1;
        System.out.print("Rock, Paper, Scissors-Enter a choice R/P/S: ");
        user = keyboard.nextLine();
        user = user.toUpperCase();
        char chUser = user.charAt(0);   

        if (chUser == compInt)
        {
            System.out.println("We chose the same item-try again");
        }
        else if (chUser == R)
        {
            if (compInt == P)
                System.out.println("1");
            else if (compInt == S)
                System.out.println("2");
        }
        else if (chUser == P)
        {
            if (compInt == R)
                System.out.println("3");
            else if (compInt == S)
                System.out.println("4");
        }
        else if (chUser == S)
        {
            if (compInt == R)
                System.out.println("5");
            else if (compInt == P)
                System.out.println("6");
        }
        else
            System.out.println("User error.");
    }
}

修改

我不确定我需要做些什么才能让程序正常运行。每次输入r,p或s时,程序只返回“用户错误”。

1 个答案:

答案 0 :(得分:0)

每次用户输入SoundPool'R''P'时,您都会将该字符与名为 'S'的变量进行比较,{{ 1}}或R,分别包含PS'1'的字符值。

因此,它们永远不会相等,您总是会收到用户错误消息。

您需要更改提示以明确用户需要输入数字,或者您需要更改比较逻辑。

此外,即使修复了此问题,您也会将计算机的随机移动存储为'2',但会尝试将其与'3'值进行比较以获得结果。

我建议创建一个int变量,存储计算机移动的字符表示,以便一切都是一致的:

char

然后你可以完全抛弃chComp char chComp = 0; if (compInt == 1) { chComp = 'R'; } else if (compInt == 2) { ... } //etc R变量并进行直接字符比较:

P