将字符串与枚举值进行比较的正确方法是什么?
作业:剪刀石头布游戏。
我创建了一个枚举:
enum Gesture{ROCK,PAPER,SCISSORS};
从中我想比较各种价值观来决定谁是计算机还是人。设置值就可以了,并且比较也可以正常工作(纸张覆盖岩石,岩石压碎剪刀,剪刀切碎纸张)。但是,我不能束手无策。只要有平局,该用户即被宣布为获胜者。
唉唉......废话......这将澄清:userPick
是一个String
具有价值rock
,paper
或scissors
。我无法用==
比较userPick
来computerPick
,正如你可以看到下面,是铸造类型Gesture
从我的enum
。
if(computer == 1) computerPick = Gesture.ROCK;
else
if(computer == 2)
computerPick = Gesture.PAPER;
else
computerPick = Gesture.SCISSORS;
if(userPick.equals(computerPick))
{
msg = "tie";
++tieGames;
}
etc....
我猜这是一个rock
不等于ROCK
或String userPick
无法匹配的问题,Gesture
computerPick因为后者不是String
。但是,我无法在教科书或Oracle的Java教程中找到类似情况的示例,因此我不确定如何解决此问题。
有什么提示吗?
回答:
我从你的问题是收集userPick
是一个String
值。您可以这样比较:
if (userPick.equalsIgnoreCase(computerPick.name())) . . .
顺便说一句,如果你是保证computer
始终是一个值1
,2
或3
(和没有别的),你可以将其转换为Gesture
与枚举:
Gesture computerPick = Gesture.values()[computer - 1];
以上是 将字符串与枚举值进行比较的正确方法是什么? 的全部内容, 来源链接: utcz.com/qa/412781.html