java for-partial循环用于部分数组

wor*_*ord 1 java arrays foreach partial

我知道如何使用for-each循环循环遍历整个数组,如下所示:

for(int d : arrayname){
    do something
Run Code Online (Sandbox Code Playgroud)

但是你如何使用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
Run Code Online (Sandbox Code Playgroud)

[0]是1月,[11]是12月

Ric*_*gle 5

您正在使用增强的for循环,您可以使用常规for循环来实现您想要的

for(int i=START; i<=END;i++){
     //do work
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它很可能看起来像

int sumOfHumidity=0
for(int month i=4; i<=9;i++){
     sumOfHumidity+=KeyWestHumid[month]
}
Run Code Online (Sandbox Code Playgroud)

然后使用sumOfHumidity你认为合适的.

其他说明

  • KeyWestHumid是一个变量,因此它应该是lowerCamelCase,所以 keyWestHumid,同样的keyWestTemp
  • 4和9的硬编码可能是不可取的,但是在不知道确切的程序结构的情况下,很难比使用变量更有建议startMonth并且endMonth可能是可取的,允许numberOfMonths使用这两个来计算(我希望你能想要从中创建平均值sumOfHumidity)


Ram*_*oza 5

double[] mayOctober = Arrays.copyOfRange(KeyWestHumid, 4, 9);
Run Code Online (Sandbox Code Playgroud)

和 foreach mayOctober 做你问的事情。

顺便说一句,在这种情况下最好使用常规循环。