我試圖計算出現在一個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