2014-02-05 119 views
2

i表示行,并且y表示连接4游戏中的列,我试图根据用户选择的列更改圆的颜色,但此代码不断给出错误类型不匹配,无法将状态转换为串。Java更改状态

public enum State{ 
    RED, YELLOW, BLANK; 
} 
+0

邮政变量的声明,整体误差,并指定其行吧被提出 – m0skit0

回答

3

究竟作为错误消息说,f应包含字符串,如您的声明中指出:

public static void dropRedCounter (String[][] f) 
            ↑  

但你的价值比作State,而你也在努力分配一个State它:

f[i][y] = State.RED; 

您可能希望有State.RED.name()以甲肝e Enum的字符串值。

有关详细信息,请参阅文档:Enum Types

0

您尝试将一个枚举分配给一个字符串。
尝试f[i][y]=State.RED.toString()保存它和State.valueOf(f[i][y])以从字符串中获取枚举。另一种方法是有一个枚举数组(只使用搜索,我相信你会发现的东西)

0

你不能直接比较枚举值和字符串,或将枚举值分配给一个字符串。但是,您可以枚举转换为字符串,并将其再比较:同样

if (f[i][y].equals(String.valueOf(State.BLANK)) { 

下一行:

f[i][y] = String.valueOf(State.RED); 
+1

或使用'.name()' – Maroun