我必须为我的班级制作一个非常简单的摇滚,纸张,剪刀游戏。我通常对这些任务很不错,但我现在已经在这个特定的工作中工作了大约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时,程序只返回“用户错误”。
答案 0 :(得分:0)
每次用户输入SoundPool
,'R'
或'P'
时,您都会将该字符与名为 'S'
的变量进行比较,{{ 1}}或R
,分别包含P
,S
和'1'
的字符值。
因此,它们永远不会相等,您总是会收到用户错误消息。
您需要更改提示以明确用户需要输入数字,或者您需要更改比较逻辑。
此外,即使修复了此问题,您也会将计算机的随机移动存储为'2'
,但会尝试将其与'3'
值进行比较以获得结果。
我建议创建一个int
变量,存储计算机移动的字符表示,以便一切都是一致的:
char
然后你可以完全抛弃chComp
, char chComp = 0;
if (compInt == 1) {
chComp = 'R';
} else if (compInt == 2) {
...
} //etc
和R
变量并进行直接字符比较:
P