基本上我有这个代码,输入 2 OR 3 个字母/数字组合,如(AH、10D、JS 和 7C),读回花色的值(红桃 A、方 block 10、黑桃 J、梅花 7。)
为什么如果我输入“10D”,代码没有打印任何内容?为什么不是寄存器10?我怎样才能解决这个问题? 另外:请帮我弄清楚如何将案例 2 - 案例 10 范围缩短为更 Eloquent 内容?我无法使用 if-then-else 语句。
System.out.print("Please enter a letter/integer of a playing card (A, J, Q, K, or 2 - 10),\nfollowed by card type (D, H, S, C):");
Scanner kbd = new Scanner(System.in);
String userInput = kbd.next().toUpperCase();
String valueofCard = userInput.substring(0, userInput.length() / 2); // gives first half of string
String suitofCard = userInput.substring(userInput.length() / 2); //give last half of string with + 1 if odd
StringBuilder result = new StringBuilder();
switch (valueofCard) {
case "A":
result.append("Ace of ");
break;
case "J":
result.append("Jack of ");
break;
case "Q":
result.append("Queen of ");
break;
case "K":
result.append("King of ");
break;
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "10":
result.append(valueofCard + " of ");
break;
}
switch (suitofCard) {
case "D":
result.append("Diamonds");
break;
case "H":
result.append("Hearts");
break;
case "S":
result.append("Spades");
break;
case "C":
result.append("Clubs");
break;
}
System.out.println(result.toString());
kbd.close();
最佳答案
如果您使用正则表达式,它也会拒绝您的错误输入。
正则表达式:([AJQK2-9]|10)([DHSC])
示例代码:
String card = "QS"; // Queen of Spades
Pattern cardPattern = Pattern.compile("([AJQK2-9]|10)([DHSC])");
Matcher m = cardPattern.matcher(card);
if (! m.matches()) {
System.out.println("Not a valid card: " + card);
} else {
String rank = m.group(1);
String suit = m.group(2);
// code here
}
关于java - 如何在第一个位置 (0) 之后正确分割该字符串,以便读取 0 之后的一个或多个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864533/