我正在我的Intro Java编程课程中工作,并想知道我在if
语句中是否有一个快捷方式。
基本上,我的程序收到一张扑克牌的双字符缩写,并返回完整的名片(即“QS”返回“黑桃皇后”。)
现在我的问题是:
当我为编号的卡2-10编写if
语句时,我是否需要为每个数字单独声明,还是可以将它们组合在一个if
语句中?
检查我的代码所在的位置 IS AN INTEGER (显然不是Java表示法。)以下是我的代码片段,以澄清:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the card notation: ");
String x = in.nextLine();
if (x.substring(0,1).equals("A")){
System.out.print("Ace");
}
else if(x.substring(0,1) IS AN INTEGER) <= 10)){ // question is about this line
System.out.print(x);
}
else{
System.out.println("Error.");
}
}
}
答案 0 :(得分:5)
您可以这样做:
char c = string.charAt(0);
if (Character.isDigit(c)) {
// do something
}
x.substring(0,1)
与string.charAt(0)
几乎相同。区别在于charAt返回char
,substring返回String
。
如果这不是作业,我建议您改用StringUtils.isNumeric
。你可以说:
if (StringUtils.isNumeric(x.substring(0, 1))) {
System.out.println("is numeric");
}
答案 1 :(得分:1)
将字符串转换为int的另一种方法是:
Integer number = Integer.valueOf("10");
您可能考虑的另一种方法是使用类或枚举。
public class Card {
// Feel free to change this
public char type; // 1 - 10, J, Q, K, A
public char kind; // Spades, Hearts, Clubs, Diamonds
public Card(String code) {
type = code.charAt(0);
kind = code.charAt(1);
}
public boolean isGreaterThan(Card otherCard) {
// You might want to add a few helper functions
}
}
答案 2 :(得分:0)
这是我能想到的最简洁的解决方案:
private static Map<String, String> names = new HashMap<String, String>() {{
put("A", "Ace");
put("K", "King");
put("Q", "Queen");
put("J", "Jack");
}};
然后在你的主要:
String x = in.nextLine();
if (x.startsWith("10")) { // special case of two-character rank
System.out.print("Rank is 10");
} else if (Character.isDigit(x.charAt(0)){
System.out.print("Rank is " + x.charAt(0));
} else
System.out.print("Rank is: " + names.get(x.substring(0,1));
}