我正在尝试用java制作一个石头剪刀游戏。我有我的基本代码
import java.util.Scanner;
import java.util.Random;
public class RPSBase
{
public static void main(String args[])
{
Random rndm = new Random();
int c =0 + rndm.nextInt(3);
Scanner c2 = new Scanner(System.in);
String pc = c2.next();
switch (c)
{
case 1:
String choice = "r";
char ch = choice.charAt(0);
break;
case 2:
choice = "p";
ch = choice.charAt(0);
break;
case 3:
choice = "s";
ch = choice.charAt(0);
break;
}
switch (ch)
{
case 'r':
if (pc == "r")
System.out.println("It's a tie");
else if (pc == "p")
System.out.println("win");
else if (pc == "s")
System.out.println("lose");
break;
case 'p':
if (pc == "p")
System.out.println("It's a tie");
else if (pc == "s")
System.out.println("win");
else if (pc == "r")
System.out.println("lose");
break;
case 's':
if (pc == "s")
System.out.println("It's a tie");
else if (pc == "r")
System.out.println("win");
else if (pc == "p")
System.out.println("lose");
break;
}
}
}
由于某些原因,当我编译程序时,我收到此错误
1 error found:
File: C:\Users\Larry\RPSBase.java [line: 26]
Error: ch cannot be resolved to a variable
为什么我会收到此错误,我该如何解决?我也试过了switch(选择),但也没用。
答案 0 :(得分:2)
您需要在ch
上方声明switch (c)
,或在交换机的每个ch
中声明case
。
由于您似乎希望稍后使用ch
,因此您需要以下代码段:
char ch = '\u0000';
switch (c)
{
case 1:
String choice = "r";
ch = choice.charAt(0);
break;
case 2:
String choice = "p";
ch = choice.charAt(0);
break;
case 3:
String choice = "s";
ch = choice.charAt(0);
break;
请注意顶部的声明(char ch
),case
中只有作业。
更新: String choice
同样如此,但对于这个,似乎最好在每个case
中声明它。
很多代码都可以改进,但我只是在这里回答您的问题,例如,您只需输入ch = 'r'
而不是String choice = "r"; ch = choice.charAt(0);
答案 1 :(得分:1)
在switch语句的情况下声明char“ch”时,它只能用于那个switch语句的情况,为了解决这个问题,你必须声明:
char ch;
在开关外面;在声明字符串pc之后。
我建议使用IDE进一步为您提供帮助,如果您,IDE会自动选择并告诉您更正错误。