1

次のように、for-each ループを使用して配列全体を循環させる方法を知っています。

for(int d : arrayname){
    do something

しかし、for-each ループを使用して部分的な配列を循環させるにはどうすればよいでしょうか。たとえば、for-each を使用して 5 月から 10 月の月のみを循環させる方法です。[4] - [9] ] 熱指数を計算します。これは、私がやろうとしていることを示す私のコードのスニペットです:

// create array for KeyWestTemp
    double[] KeyWestTemp;
    KeyWestTemp = new double[12];

    // initialize array
    KeyWestTemp[0] = 70.3;
    KeyWestTemp[1] = 70.8;
    KeyWestTemp[2] = 73.8;
    KeyWestTemp[3] = 77.0;
    KeyWestTemp[4] = 80.7;
    KeyWestTemp[5] = 83.4;
    KeyWestTemp[6] = 84.5;
    KeyWestTemp[7] = 84.4;
    KeyWestTemp[8] = 83.4;
    KeyWestTemp[9] = 80.2;
    KeyWestTemp[10] = 76.3;
    KeyWestTemp[11] = 72.0;

    // create array for KeyWestHumid
    int[] KeyWestHumid;
    KeyWestHumid = new int[12];

    // initialize array
    KeyWestHumid[0] = 69;
    KeyWestHumid[1] = 67;
    KeyWestHumid[2] = 66;
    KeyWestHumid[3] = 64;
    KeyWestHumid[4] = 66;
    KeyWestHumid[5] = 69;
    KeyWestHumid[6] = 67;
    KeyWestHumid[7] = 67;
    KeyWestHumid[8] = 70;
    KeyWestHumid[9] = 69;
    KeyWestHumid[10] = 69;
    KeyWestHumid[11] = 70;

    // for-each loop for calculating heat index of May - October

[0] は 1 月、[11] は 12 月です。

4

6 に答える 6

1

拡張 for ループを使用して配列を部分的に反復することはできません。
Java 言語仕様によると、次のようになります。

拡張された for ステートメントは、次の形式の基本的な for ステートメントと同等です。

T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
    VariableModifiersopt TargetType Identifier = #a[#i];
    Statement
}

他の回答で示唆されているように、反復する要素のみを含む新しい配列 (または他のコレクション) を作成するか、通常の for ループを使用できます。

于 2013-11-07T16:20:23.387 に答える
1

Java 8 では:

double[] array = {1, 6, 7, 3, 3, 1, 2, 8, 9, 7, 3};

Arrays.stream(array, 3, 6).forEach((d) -> {
    System.out.println(d);
});

OR

IntStream.range(3, 6).mapToDouble(i -> array[i]).forEach(d -> {
    System.out.println(d);
});
于 2013-11-07T16:50:42.010 に答える
0

配列から離れてLists を使用することもできます。

public void test() {
  List<Double> keyWestTemp = new ArrayList(Arrays.asList(70.3, 70.8, 73.8, 77.0, 80.7, 83.4, 84.5, 84.4, 83.4, 80.2, 76.3, 72.0));
  System.out.println("Key West Temps: "+keyWestTemp);
  System.out.println("Apr-Jun Temps: "+keyWestTemp.subList(3, 6));
  keyWestTemp.set(4, 81.6);
  System.out.println("Apr-Jun Temps: "+keyWestTemp.subList(3, 6));
}

明らかに、サブリストを印刷するのと同じくらい簡単にサブリストを反復処理でき、それらは基になるリストに反映されます。つまり、元のリストを変更すると、サブリストにも変更が反映されます。

于 2013-11-07T17:00:41.040 に答える