【发布时间】:2022-01-14 15:20:46
【问题描述】:
我正在尝试编写一个程序来玩纸牌游戏黑桃的精简版本,并且我想通过使用 switch 语句而不是重复的 if/else if/else 来提高我的代码效率。我需要这个函数来接收一个字符串(userCard),它看起来像“Spades,2”或“Diamonds,6”。我需要它将字符串末尾的数字保存为 int 数据类型。以下是有效的 if/else if/else 语句。
public static int getUserValue(String userCard) {
int userValue = 0;
if (userCard.contains("4")) {
userValue = 4;
} else if (userCard.contains("5")) {
userValue = 5;
} else if (userCard.contains("6")) {
userValue = 6;
} else if (userCard.contains("7")) {
userValue = 7;
} else if (userCard.contains("8")) {
userValue = 8;
} else if (userCard.contains("9")) {
userValue = 9;
} else if (userCard.contains("10")) {
userValue = 10;
} else if (userCard.contains("11")) {
userValue = 11;
} else if (userCard.contains("12")) {
userValue = 12;
} else if (userCard.contains("13")) {
userValue = 13;
} else if (userCard.contains("1")) {
userValue = 1;
} else if (userCard.contains("2")) {
userValue = 2;
} else if (userCard.contains("3")) {
userValue = 3;
}
return userValue;
}
所以我想我可以做类似的事情
public static int getUserValue(String userCard) {
int userValue = 0;
switch (userCard){
case userCard.contains("4"):
userValue = 4;
break;
}
//etc, goes up to 13 then evaluates if 1, 2, 3.
return userValue;
}
它给出了一个错误,我无法将布尔值转换为字符串。 有什么办法可以改变这个或输入这个来按我想要的方式工作吗?
【问题讨论】:
-
看起来你应该为你的卡片使用一个对象而不是字符串。这样你就可以使用开关了。
-
也许您可以将字符串
userCard分开,以便您切断数字?字符串看起来总是一样吗? -
错误很明显,因为
contains()方法是boolean,boolean数据类型不能用在switch-case语句中。您应该改用枚举。 -
使用
contains首先是一个逻辑错误。当字符串为"14"时,contains("4")将评估为true。
标签: java string switch-statement boolean