i
表示行,y
表示连接4游戏中的列,我尝试根据用户选择的列更改圆的颜色,但此代码不断给出错误类型mismatch无法将状态转换为字符串。
public enum State{
RED, YELLOW, BLANK;
}
答案 0 :(得分:3)
完全正如错误消息所示,f
应包含字符串,正如您的声明所述:
public static void dropRedCounter (String[][] f)
↑
但您将其值与State
进行比较,并且您还尝试为其分配State
:
f[i][y] = State.RED;
您可能希望拥有State.RED.name()
以获得枚举的字符串值。
有关详细信息,请参阅文档:Enum Types。
答案 1 :(得分:0)
您尝试将字符串分配给字符串
尝试f[i][y]=State.RED.toString()
保存,State.valueOf(f[i][y])
从字符串中获取枚举。另一种方法是拥有一个枚举数组(只需使用搜索,我相信你会找到一些东西)
答案 2 :(得分:0)
您无法直接比较枚举值和字符串,也无法为字符串指定枚举值。但是,您可以将枚举转换为字符串并比较它们:
if (f[i][y].equals(String.valueOf(State.BLANK)) {
同样适用于下一行:
f[i][y] = String.valueOf(State.RED);