2016-08-19 3 views

答えて

1

これは簡単なシナリオです。ソートされた配列に対して通常のforループを使用するだけで済みます。

for (int index=1; index<=values.length;index++) {   
    System.out.println("index : "+index+" value :"+values[index-1]); 
}   
+1

エラー、Java配列は0から始まります。 'int index = 0;を使用してください。インデックス

+0

おっと...ちょうどそれに気づいた。ありがとう。それを修正した –

2

forループは、配列の値を簡単に取得する方法ですが、要素のインデックスにアクセスすることはできません。

for(int index = 0; index < values.length; index++) { 
    System.out.println(index + ": " + values[index]); 
} 
0

もう1つの方法(ある観点ではもっと柔軟性があります)は、単に外部の整数値を追加することです。

int index = 0; 
for (double value : values) {   
    System.out.println(++index + ". " + value); 
}  
0

コードでは、インデックスではなく配列に値を出力しています。したがって、for-eachループを使用して配列インデックスを値で出力したい場合は、ここでコードを指定します。あなたは、あなたがインデックスの配列を収集し、値にそれらを並べ替える必要があり、アレイ内の各今や、ソート項目の元のインデックスを追跡したい場合は

Arrays.sort(values);  
int i=0; 
for (double value : values) {   
    System.out.println("index is "+i+" , value is :"+value); 
    i++; 
}  
0

この1

Arrays.sort(values); 
int i=0;  
for (double value : values) {   
    System.out.println("Index :"+i++ +" Value: "+value); 
} 
0

をお試しくださいその指数で予想されるとおりにある

public void test() { 
    int[] values = {9,8,7,6,5,4,3,2,1}; 
    // Grab the indexes of each. 
    Integer[] indexes = new Integer[values.length]; 
    for (int i = 0; i < indexes.length; i++) { 
     indexes[i] = i; 
    } 
    // Sort them through the indexes. 
    Arrays.sort(indexes, new Comparator<Integer>() { 

     @Override 
     public int compare(Integer o1, Integer o2) { 
      return Integer.compare(values[o1], values[o2]); 
     } 
    }); 
    System.out.println(Arrays.toString(indexes)); 

    // Or in a single expressive Java-8 line: 
    System.out.println(
      // Count the elements. 
      IntStream.range(0, values.length) 
        // Turn int to Integer 
        .boxed() 
        // Sort it on the values behind the indexes. 
        .sorted((i, j) -> Integer.compare(values[i], values[j])) 
        // Make a list. 
        .collect(Collectors.toList()) 
    ); 
} 

プリント

[8、7、6、5、4、3、2、1、0]

関連する問題