Domanda

So come usare il ciclo per percorrere per scorrere un intero array come così:

for(int d : arrayname){
    do something

Ma come si usa il ciclo per percorrere per pedalare attraverso un array parziale, come quello che sto cercando di fare è usare il per essere percorsare solo i mesi di maggio-ottobre, cioè [4]-[9 ] per calcolare l'indice di calore. Ecco uno snippet del mio codice che mostra cosa sto cercando di fare:

// 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] è gennaio e [11] è dicembre

È stato utile?

Soluzione

double[] mayOctober = Arrays.copyOfRange(KeyWestHumid, 4, 9);

e fooch Mayoctober per fare quello che hai chiesto.

A proposito, in tal caso si preferisce utilizzare loop convenzionale.

Altri suggerimenti

Stai usando il ciclo migliorato, puoi semplicemente utilizzare il normale loop per ottenere ciò che desideri

for(int i=START; i<=END;i++){
     //do work
}

Nel tuo caso molto probabilmente sembrerebbe

int sumOfHumidity=0
for(int month i=4; i<=9;i++){
     sumOfHumidity+=KeyWestHumid[month]
}

e poi usa sumOfHumidity Comunque ti ritieni opportuno.

Altre note

  • KeyWestHumid è una variabile, in quanto tale dovrebbe essere lowercamelcase, quindikeyWestHumid, lo stesso per keyWestTemp
  • La codifica dura di 4 e 9 è probabilmente indesiderabile, ma senza conoscere l'esatta struttura del programma è difficile consigliare oltre che dire l'uso delle variabili startMonth e endMonth è probabilmente desiderabile, permettendo numberOfMonths essere calcolato usando i due (che mi aspetto che vorrai creare una media sumOfHumidity)

Puoi usare un ciclo normale:

for(int month=4; month<=9; month++){
 KeyWestHumid[month].something();
}

Non è possibile utilizzare il ciclo migliorato per iterare parzialmente un array.
Secondo la specifica del linguaggio Java:

L'affermazione migliorata è equivalente a una dichiarazione di base per il modulo:

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

È possibile, come suggerito in altre risposte, creare un nuovo array (o qualsiasi altra raccolta) che contiene solo gli elementi che si desidera iterare o utilizzare un ciclo normale.

In 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);
});

Potresti provare a allontanarti dagli array e usare 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));
}

Ovviamente puoi iterare attraverso i sotto-listi con la stessa facilità con cui puoi stamparli e brillano verso l'elenco sottostante. cioè se cambi l'elenco originale, il sotto-list vede anche la modifica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top