2016-11-24 9 views
0

まず、この質問のタイトルに間違いがある場合は、すみません。私はちょうどそれを質問に入れる方法を知らない。次のコードは、サイコロを1000回転がし、サイコロの数値が何回転がされるかを表示します。私は要素ではなく、最大の数のインデックスを印刷したいと思います。最大要素を選択した後に配列要素のインデックスを印刷する

import java.util.Random; 

public class apples { 
public static void main(String args[]){ 
    Random rand = new Random(); 
    int a[] = new int[7]; 

    for(int i = 1; i<1001; i++){ 
     ++a[rand.nextInt(6) + 1]; 
    } 
    System.out.println("Roll\tTimes"); 

    for(int j=1; j<a.length; j++){ 
     System.out.println(j + "\t\t" + a[j]); 
    } 
    int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
      max = i; 

     } 
    } 
    System.out.println("The winning number is " + max); 

} 

} 

EDIT:

私は、インデックスを取得する方法を考え出したが、それを行うための簡単な方法はありますか?

import java.util.Random; 

public class apples { 
public static void main(String args[]){ 
    Random rand = new Random(); 
    int a[] = new int[7]; 
    int winner = 0; 

    for(int i = 1; i<1001; i++){ 
     ++a[rand.nextInt(6) + 1]; 
    } 
    System.out.println("Roll\tTimes"); 

    for(int j=1; j<a.length; j++){ 
     System.out.println(j + "\t\t" + a[j]); 
    } 
    int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
      max = i; 

     } 
    } 
    for(int j=0; j<a.length; j++){ 
     if(max==a[j]){ 
      winner = j; 
     } 
    } 
    System.out.println("The winning number is " + winner); 

} 

} 
+0

通常のforループにforeachを書き換えます。与えられたposの配列の値をmaxに格納する代わりに、インデックスをそこに格納し、現在の最大valがあるインデックスの値と比較するのではなく、数値と比較する。 – SomeJavaGuy

+0

if文で別のループを開いて、maxの値が配列要素と等しいかどうかを確認し、別の変数にインデックスを代入してからそれを印刷しました....しかし、それ以外の方法はありますか? –

+0

[配列の最大値のインデックスを見つけて印刷するにはどうすればよいですか?](http://stackoverflow.com/questions/8991103/how-can-i-locate-and-print-the-index -of-a-max-value-in-an-array) –

答えて

0

あなたはとのコードに以下に示すように、むしろ、あなたが通常のforループを使用する必要があるあなたがのために、各ループ(あなたがやったかのような)を使用する場合(直接)配列のインデックスを取得することができなくなりますコメント:

int max = a[0]; 
int maxIndex = 0;//take a variable & Initialize to 0th index 
for (int i=0; i<a.length;i++) {//normal for loop, not for each 
    if (max < a[i]) { 
     max = a[i]; 
     maxIndex = i;//capture the maxIndex 
    } 
} 
System.out.println(": maxIndex :"+maxIndex);//print the maxIndex 
+0

ありがとうございました。私はあなたが言ったことをすれば、私はいつもインデックスを6としていると混乱しています。 –

+0

いいえ、条件があると、maxIndexに大きな値がある場合にのみ値が割り当てられます – developer

0

あなたはforループをインデックス化し、最大数のインデックスを追跡するためにあなたのforeachを変更する必要があります。

変更

int max = a[0]; 
    int index = 0; 
    for (int j = 0, aLength = a.length; j < aLength; j++) { 
     int i = a[j]; 
     if (max < i) { 
      max = i; 
      index = j; 
     } 
    } 
    System.out.println("The winning number is " + max); 
    System.out.println("The winning index is " + index); 

これと

int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
     max = i; 

    } 
} 

変更をするこの部分は、それが達成されたロールれるlasrgest番号が印刷されます。

関連する問題