2012-02-12 11 views
0

配列内の最大値の位置(インデックス)番号を表示しようとしています。 100個の乱数を持つ配列です。何らかの理由で、最初の数文字の後に出力が正しくなります。私は出力の始めに常に間違った数字を得る。これは私が持っているコードです。 おかげ配列要素のJavaでの位置表示

public static void main(String[] args) { 
    int max = 0; 
    int array[] = new int[100]; 
    System.out.println(); 

    // code to display student responses 
    randomNum(array); 

    System.out.println(" Survey Responses - 100 Students: "); 
    response(array); 

    System.out.println("Positions of the highest numbers"); 
    System.out.println(); 

    for (int i = 0; i < array.length; i++) { 
     max = Math.max(max, array[i]); 
     if (array[i] == max) { 
      System.out.println(i); 
     } 
    } 
} 

private static void randomNum(int A[]) { 
    for (int i = 0; i < A.length; i++) { 
     A[i] = (int) (Math.random() * 10000) % 10 + 1; 
    } 

} 

public static void response(int[] resp) { 
    for (int x = 0; x < resp.length; x++) { 
     System.out.print(resp[x] + " "); 
    } 
    System.out.println(); 
} 
+0

"配列内の最大の数字の位置"という意味を明確にしてください。固定数のインデックスを印刷しますか?現在のコードでは、配列に左から右のパスを渡すので、「これまでに見た最大の番号」のインデックスが表示されます。 –

答えて

1

を実行し、このような2つのサイクル、:

for (int i = 0; i < array.length; i++) { 
    max = Math.max(max, array[i]); 
} 
for (int i = 0; i < array.length; i++) { 
    if (array[i] == max) { 
     System.out.println(i); 
    } 
} 

これまでのところ、あなたの接頭辞ではなく、合計最大値に等しい値の指標で見られる最大数の出力指標。

+0

作品!おかげでたくさん!ありがとうございました – Tiamat

+0

このスニペットをルーチンで代わりに使うことができます。もっと便利です。見て、あなたのコードを修正しました。 – Juvanis

0

配列をソートするのは簡単ではないでしょうか?あなたのアルゴリズムが間違っている

java.util.Arrays.sort(arr); 
final int min = (arr.length > 0) ? arr[0] : 0; 
final int max = (arr.length > 0) ? arr[arr.length-1] : 0; 
0

:次に、あなたは、arr.length-1でインデックス0とmaxでこのような何かを分要素を持っています。値を出力すると、配列をループして、 'max'の現在の値を配列の現在の要素と比較します。あなたは(簡単にするために)だけで10個の数字の配列を持っていたのであればループを通る最初の旅行で

1,2,3,4,5,6,7,8,9,10

ありました'max'(0)の現在の値を配列の最初の要素(1)と比較して1を出力し、maxを1に設定します。2回目は、max(1)の現在の値が配列(2)の2番目の要素と2を出力し、maxを2に設定します。ループを通る各繰り返しで同じことが起こり、すべての値が出力されます。

異なる順序で同じ番号が含まれてい

10,9,8,7,6,5,4,3,2,1

の逆の場合で、印刷したいです最初のループでmaxを10に設定しているため、10を出すだけです。

関連する問題