我试图计算出现在一个java字符串中的字符数。检查一个Java字符串中的字符数是否正确
例如:
给出的牌手6S/3D/2H/13C /广告
多少次/字符出现? = 4
用户可以输入不同数量的卡片变量,因此硬编码检查出现次数的方法将不起作用。
分隔符可以是以下任何一个: - /空格(一个手中只允许使用一个分隔符类型)。 所以我需要能够检查分隔符是否出现4次,否则就给出了不正确的格式。
这里的一些Java代码给的什么,我试图做一个更好的主意:
String hand = "6s/1c/2H/13c/Ad";
System.out.println("Original hand: " + hand);
// split the hand string into individual cards
String[] cards = hand.split(hand);
// Checking for separators
// Need to check for the correct number of separators
if(hand.contains("/")){
cards = hand.split("/");
} else if (hand.contains("-")){
cards = hand.split("-");
} else if (hand.contains(" ")){
cards = hand.split(" ");
} else {
System.out.println("Incorrect format!");
}
任何帮助将是巨大的!
另外这是一个学校项目/作业。
编辑1 -------------------------------------------- ------------所以这里
确定是我的代码你的建议后
String hand = "6s 1c/2H-13c Ad";
System.out.println("Original hand: " + hand);
// split the hand string into individual cards
String[] cards = hand.split("[(//\\-\\s)]");
if (cards.length != 5) {
System.out.println("Incorrect format!");
} else {
for (String card : cards) {
System.out.println(card);
}
}
上面给出的手是不正确的格式,因为用户只能使用一种类型的一个给定的手的分离器。例如:
- 6S/1C/2H/13C /广告 - 正确
- 6S-1C-2H-13C-信息 - 正确
- 6S 1C 2H 13c的信息 - 正确
我如何确保用户只使用一种类型的分隔符?
到目前为止的答案欢呼!
编辑2 ------------------------------------------
所以玩弄嵌套的if语句我的代码现在看起来像这样:
String hand = "6s/1c/2H/13c/Ad";
System.out.println("Original hand: " + hand);
// split the hand string into individual cards
if(hand.contains("/")){
String[] cards = hand.split("/");
if(cards.length != 5){
System.out.println("Incorrect format! 1");
} else {
for (String card : cards) {
System.out.println(card);
}
}
} else if(hand.contains("-")){
String[] cards = hand.split("-");
if(cards.length != 5){
System.out.println("Incorrect format! 2");
} else {
for (String card : cards) {
System.out.println(card);
}
}
} else if(hand.contains(" ")){
String[] cards = hand.split(" ");
if(cards.length != 5){
System.out.println("Incorrect format! 3");
} else {
for (String card : cards) {
System.out.println(card);
}
}
} else {
System.out.println("Incorrect format! 4");
}
这样按预期工作,但丑!
任何建议将是伟大的欢呼声。
由于这是功课,只是一个提示。 'split'方法允许正则表达式,这可以解决你的问题。请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum – home 2012-08-04 06:17:10
谢谢。我一直在尝试使用正则表达式,但如果给定的手改变了,它似乎不起作用。例如,用户可以输入AS/13D/JS/13S/AD,这在分隔符出现的地方发生改变。但在说这可能是我做我的正则表达式的方式。干杯。 – FreshWaterJellyFish 2012-08-04 06:22:05
@ user1575658你试过了什么正则表达式? – assylias 2012-08-04 06:26:49