2010-12-04 10 views
0

サイズ5の文字列でペアを見つけるのに問題があります。したがって、2つのペアしか存在できません。私が見つけたすべてのペアについて、スコアを2ポイント上げる必要があります。 これまで私がこれまで持っていたことはありますが、間違っています。5つのペアの検索

String temp = "4 5 4 3 3"; 
    String tempLine = temp.replaceAll(" ", ""); 
    String[] hand = temp.split(" "); 
     for(int i = 0; i < hand.length; i++) 
        { 

         if(hand[i].equals(tempLine.substring(0, 1)) && i !=0) 
          score += 1; 
         if(hand[i].equals(tempLine.substring(1, 2)) && i != 1) 
          score += 1; 
         if(hand[i].equals(tempLine.substring(2, 3)) && i!= 2) 
          score += 1; 
         if(hand[i].equals(tempLine.substring(3, 4)) && i!= 3) 
          score += 1; 
         if(hand[i].equals(tempLine.substring(4)) && i != 4) 
          score += 1; 

        } 

編集:私はこの手を探してループものの

+0

もっとコードを教えてもらえますか?そしてあなたの達成しようとしていることについてもっと説明してください! – Michael

答えて

1

私は、これはあなたが何をしようとして収まると思います。

char[] hand = {'a','b','c','b','c'}; 
/* sort the hand to ensure pairs are next to each other */ 
for(int x=0;x<hand.length - 1;x++){ 
    for(int y=(x+1);y<hand.length;y++){ 
     if((int)hand[x] > (int)hand[y]){ 
      char temp = hand[y]; 
      hand[y] = hand[x]; 
      hand[x] = temp; 
     } 
    } 
} 
int score = 0; 
for(int x=0;x<hand.length - 1;x++){ 
    if(hand[x] == hand[x + 1]){ 
     score++; 
     /*if you want to make sure you only get pairs 
      add an "x++;" that way it'll skip over the 
      letter you just tested*/ 
    } 
} 
2

ソート最初にして手で見つかった1組になり、実施例4のために、同様の値を持っている手でペアを見つけようとしています手[i] ==手[i-1]。 3秒または4秒を2回カウントしないようにするには少し賢明でなければならないかもしれませんが、これはあなたを始められるはずです。

0

1)なぜハンド配列の要素をの他の要素と比較していないのですか?文字列を解釈して配列データを作成する作業はすでに完了しています。これを使って。

2)それ以上の要素のペアが存在します。 5つの同様のオブジェクトをコンピュータの前に並んで置いて、自分で試してみてください。あなたは10組を識別できるはずです。また、ペアを見つける/ラベル付けする方法のパターンを特定できる必要があります。

+0

私は同じ価値を持っている手のペアを見つけようとしています。例えば、この手で見つけられるのは1対です。 –

+0

...そして?あなたの配列は2つの異なる空間に4つ含まれています。配列の要素と配列の別の要素を比較します。それを文字列の一部と比較しないでください。 –

2

実際のHandクラスを作成し、カードを表すのにStringを使用しないでください。 Cardのランクとスーツがenumに適した候補である:

class Card { 
    enum Suite { ... }; 
    enum Rank { ... }; 

    private final Suite s; 
    private final Rank r; 

    // ... 
} 

class Hand { 
    private Card[] cards; 
    // ... 
} 

そして、それは容易に評価することができるあなたのHandクラスでCard[]を並べ替えます。

カードを搭載した例がありますチェックアウトOracleのenumチュートリアル:http://download.oracle.com/javase/1.5.0/docs/guide/language/enums.html

0

この例は、ペアを数える方法の1つです。問題は、文字列や配列などに3つの等しい値がある場合に、どのように振る舞うべきか(スコアを上げる)です。これを3組としてカウントするのか、まったくないのか... ...?

 
123 is in fact three combinations 12 && 13 && 23 
111 is in fact three combinations 11 && 11 && 11 
 


package edu.harris.pairs; 

public class FindPairs { 

    public static void main(String[] args) { 
    String s = "hello"; 
    int score = 0; 
    for (int i = 0; i < s.length() - 1; i++) { 
     for (int j = i + 1; j < s.length(); j++) { 
     if (s.charAt(i) == s.charAt(j)) { 
      score++; 
     } 
     } 
    } 
    System.out.println(score); 
    } 

} 

 

これは少しお役に立てば幸いです。