2012-04-23 3 views
3

私は学校のためのプロジェクトに取り組んでおり、これを理解することはできません。私は非常に初心者の初心者です。6の整数の配列を2次元のint配列[19] [5]とどのように比較できますか?

私はtickets[19][6]と呼ばれる2つの配列を各チケットに6つのintを付けています。 私はこれらの20のチケットを、.txtファイルから読み取ったwinner[5]という6つの数字を持つ通常の整数配列に比較しようとしています。

次のように両方のアレイが記載されている:

public static int[] winner = new int[5] 
public static int[][] tickets = new int[19][5] 

私はこれまで非常に新たなんだ、と私は事前に任意の助けに感謝覚えておいてください!

EDITこれは私の2次元配列にユーザー入力を割り当てるために使用しているループです。これは無限ループだったことをすべて知りました。私はコードを書いているのはもっと....と思っていました。これまでのデバッグの技術に似ているようだ。

static void ticketNumberArray(){ 

    int number = 1;  // which of the six numbers you need from the ticket 
    int ticketCount = 1; // which ticket (out of 20) you are currently on 

    while(ticketCount<21){ // sentinel controlled while loop, 
          // will continue until the twentieth ticket is entered 
     System.out.println("Please type number " +number+ " of ticket number " +ticketCount+ "."); 
          //asks for the numbers of the ticket your currently on 

     Scanner keyboard = new Scanner(System.in); // initiates a scanner variable 

     int ticketNumber = keyboard.nextInt();  // assigns user input to the double variable ticketNumber 
                // and initializes as a double 

     tickets[ticketCount-1][number-1]=ticketNumber; // assigns user input into a 2-d array 

     number++;   //Sentinel variable 

     if(number==7){  //loop that controls the ticket count, every 6 numbers ='s one ticket 
      ticketCount++; 
      number=1; 
     } 
    } 
} 
+1

「比較する」とはどういう意味ですか?平等のためのテスト? –

+1

私は平等のためのテストははいと信じています。私は勝者[]をチケット[] []と比較してチケット[] []を検索して勝者と一致させようとしています[] – BBradshaw1

+0

"iteration" - 'for 'ループ、例えば。おそらく3つのネストされたループ。 (おそらく、おそらく2つのループ、入れ子になって、あなたの問題を再読み込みします。) –

答えて

1

チケットには5つの整数、または6がありますか?あなたの質問は自分自身と矛盾します。

いずれの場合でも、チケット内の整数がまったく同じ順序で同じ値を持つかどうかを確認する場合は、最も簡単な解決策は単にArrays.equals(int[], int[])を使用することです。

+0

しかし、私はそれを試しましたが、チケットは[2次元配列であり、いずれかの仕事。 =/ – BBradshaw1

+1

forループを試しましたか? –

+0

@ user1350269:もちろんです。一枚のチケットを「勝者」と比較する必要があります。だから 'Arrays.equals(tickets [i]、winner)'は 'tickets [i]'が 'winner'と等しいかどうかを伝えます。 –

3

まず、配列を宣言するときに[ ]に入れた数値は配列のサイズです。だから、6つの項目で配列を作るには、[6]とする必要があります。インデックスには0〜5の番号が付けられます。

tickets配列のチケット「行」をループして、それを勝者配列と比較するだけです。各行は無条件チケットです。 2D配列の「列」は、チケットを構成する個々の数字です。

チケットの個数順がArrays.equalの場合、ルイの提案を使用することができます。 (。勝者は0-1-2-3である場合、すなわち、あなたは唯一のチケット0-1-2-3で勝つことができる - ほとんどの宝くじは、あなたが任意の組み合わせを獲得することができます。)

for(int i=0; i < tickets.length; i++) 
{ 
    int[] ticket = tickets[i]; 

    if(Arrays.equals(ticket, winner)) 
    { 
     // This one is the winner 

     // For efficiency you should probably stop looping 
     break; 
    } 
} 

編集:

イントロ教授の多くはドン」学生がAPIを使用するときに気に入ってください。だから、自分でequals関数を書く必要があります。

private static boolean areEqual(int[] a, int[] b) 
{ 
    if(a == null && b == null) 
     return true; 

    // Not equal if one is null and the other is not  
    if(a == null || b == null) 
     return false; 

    if(a.length != b.length) 
     return false; 

    // When we get here we have to check each element, one by one 
    // Implementation left as exercise :-) 
} 
+0

mkだから、私はaとbをそれぞれ勝者とチケットで埋める必要があると思います...しかし、あなたは実装が何を意味するか分かりません。これは私がこれまで教えてきたコードのようには見えません=/ – BBradshaw1

+0

'areEqual'は' Arrays.equals() 'と同じことをする関数です。私が言ったように、多くの教授は学生がAPIを呼び出すのが好きではありません。 'Arrays ...'関数を呼び出す代わりに 'areEqual(ticket、winner)'を呼び出すだけです。私は実際に配列の要素をチェックする実装を残しました( 'areEqual()')... – debracey

+0

ok、私はそこから取ることができると思います....私はまた問題を抱えていますユーザー入力を2次元配列に割り当てます。私はちょうど20枚のチケットをすべて入力しようとしました、そして、私は無限ループに入っています。ここに私が持っているものがあります。 *元の質問へのループを追加* – BBradshaw1