PDA

Visualizza la versione completa : [JAVA] Metodo con Array


canturio
13-01-2005, 17:13
Devo creare un metodo che esegua questa funzione:
- In entrata ho un array di interi(di dimensione sconosciuta)
- In uscita ho solo i numeri del precedente array che hanno almeno un numero pari a sinistra e almeno un numero dispari a destra

Esempio:

array in entrata |1|2|4|7|9|2|5|11|4|

array in uscita |4|7|9|2|5|

Come posso realizzarlo??? :messner: :messner:

LeleFT
13-01-2005, 17:22
Cosė:


public int[] metodo(int [] a) {
Vector v = new Vector();
int i = 1;
int [] temp = null;
while (i<a.length-1) {
if (((a[i-1] % 2) == 0) && ((a[i+1] % 2) == 1)) {
v.add( new Integer(a[i]) );
}
i++;
}

i = 0;
temp = new int[v.length()];
while (i<v.size()) {
temp[i] = ((Integer) v.elementAt(i)).intValue();
i++;
}

return temp;
}

Ciao. :ciauz:

Sergio Pedone
13-01-2005, 17:48
sbaglio o in uscita dovresti avere solo 4,7 e 5 ?

LeleFT
13-01-2005, 17:49
Sė, infatti! :)


Ciao. :ciauz:

Andrea1979
13-01-2005, 18:03
non conveniva per efficienza, cercare il primo numero pari a partire dall'inizio dell'array e il primo numero dispari a partire dalla fine dell'array e ritornare tutti gli elementi agli indici compresi con arraycopy?

LeleFT
13-01-2005, 18:17
Uhm... guardando il suo esempio, ora mi viene da riflettere...

Se fosse cosė, sarebbe ancora pių semplice:


public int [] metodo(int [] a) {
int l = 0;
int r = a.length-1;
int [] temp;

while (l<a.length || ((l%2)!=0)) l++;
while (r>0 || ((r % 2) == 0)) r--;

temp = new int[(r-l)+1];
for (int i=0; i<temp.length; i++) temp[i] = a[l+i];

return temp;
}

@canturio: quale delle due soluzioni č quella che cerchi?


Ciao. :ciauz:

canturio
13-01-2005, 22:02
Grazie per le risposte!!!

Il numero pari o il numero dispari basta che esista, non importa che siano effettivamente affianco a ciascun elemento preso in considerazione volta per volta.
Effetivamente si puō fare anche come ha detto Andrea1979, viene come nell'esempio da me postato

(il risultato dell'array in uscita č cosė come l'ho copiato dal testo originale, che riportava tale esempio per spiegare il problema da risolvere)

Loading