作业:Rock Paper Scissors游戏.
我创建了一个枚举:
enum Gesture{ROCK,PAPER,SCISSORS};
Run Code Online (Sandbox Code Playgroud)
从中我想比较价值来决定谁赢 - 计算机或人.设置值很好,比较工作正常(纸张覆盖岩石,岩石压碎剪刀,剪刀剪纸).但是,我无法让我的领带发挥作用.只要有平局,用户就会被宣布为获胜者.
唉唉......废话......这将澄清: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....
Run Code Online (Sandbox Code Playgroud)
我猜这是一个rock不等于ROCK或者String userPick无法匹配的问题,Gesture computerPick因为后者不是String.但是,我无法在我的教科书或Oracle的Java教程中找到类似情况的例子,所以我不确定如何纠正这个问题......
任何提示?
Ted*_*opp 46
我从你的问题是收集userPick是一个String值.你可以这样比较:
if (userPick.equalsIgnoreCase(computerPick.name())) . . .
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你是保证computer始终是一个值1,2或3(和没有别的),你可以将其转换为Gesture与枚举:
Gesture computerPick = Gesture.values()[computer - 1];
Run Code Online (Sandbox Code Playgroud)
kan*_*arp 22
你应该声明toString()和valueOf()方法enum.
import java.io.Serializable;
public enum Gesture implements Serializable {
ROCK,PAPER,SCISSORS;
public String toString(){
switch(this){
case ROCK :
return "Rock";
case PAPER :
return "Paper";
case SCISSORS :
return "Scissors";
}
return null;
}
public static Gesture valueOf(Class<Gesture> enumType, String value){
if(value.equalsIgnoreCase(ROCK.toString()))
return Gesture.ROCK;
else if(value.equalsIgnoreCase(PAPER.toString()))
return Gesture.PAPER;
else if(value.equalsIgnoreCase(SCISSORS.toString()))
return Gesture.SCISSORS;
else
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我的想法:
public enum SomeKindOfEnum{
ENUM_NAME("initialValue");
private String value;
SomeKindOfEnum(String value){
this.value = value;
}
public boolean equalValue(String passedValue){
return this.value.equals(passedValue);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想检查价值你写:
SomeKindOfEnum.ENUM_NAME.equalValue("initialValue")
Run Code Online (Sandbox Code Playgroud)
有点看起来很好:).也许有人会发现它很有用.
小智 6
public class Main {
enum Vehical{
Car,
Bus,
Van
}
public static void main(String[] args){
String vehicalType = "CAR";
if(vehicalType.equals(Vehical.Car.name())){
System.out.println("The provider is Car");
}
String vehical_Type = "BUS";
if(vehical_Type.equals(Vehical.Bus.toString())){
System.out.println("The provider is Bus");
}
}
}
Run Code Online (Sandbox Code Playgroud)
定义枚举:
public enum Gesture
{
ROCK, PAPER, SCISSORS;
}
Run Code Online (Sandbox Code Playgroud)
定义一个检查enum内容的方法:
private boolean enumContainsValue(String value)
{
for (Gesture gesture : Gesture.values())
{
if (gesture.name().equals(value))
{
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
String gestureString = "PAPER";
if (enumContainsValue(gestureString))
{
Gesture gestureId = Gesture.valueOf(gestureString);
switch (gestureId)
{
case ROCK:
Log.i("TAG", "ROCK");
break;
case PAPER:
Log.i("TAG", "PAPER");
break;
case SCISSORS:
Log.i("TAG", "SCISSORS");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117195 次 |
| 最近记录: |