Java文字列に出現する文字数を数えようとしています。
例えば:
ポーカーハンドを考えると6s/3d / 2H / 13c / Ad
/文字は何回出現しますか?= 4
ユーザーはカード変数の数を変えて別のハンドを入力できるため、発生をチェックするメソッドをハードコーディングしても機能しません。
セパレータは、次のいずれかになります。-/スペース(片手で使用できるセパレータタイプは1つだけです)。したがって、いずれかのセパレータが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------------------------------------------------- --------
OK、これがあなたの提案の後の私のコードです
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);
}
}
上記の特定のハンドは、ユーザーが特定のハンドに対して1つのタイプのセパレーターしか使用できないため、正しい形式ではありません。例えば:
- 6s / 1c / 2H / 13c/Ad-正解
- 6s-1c-2H-13c-広告-正解
- 6s 1c 2H13cAd-正解
ユーザーが1種類のセパレーターのみを使用するようにするにはどうすればよいですか?
これまでの答えに乾杯!
編集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");
}
この方法は意図したとおりに機能しますが、醜いです!
どんな提案でも大歓声になります。