PDA

Visualizza la versione completa : [JAVA] Alternativa all'IF


bolzman
19-10-2005, 15:35
sto scrivendo un programma in JAVA e ho questo problema:
ho due array, diciamo
a(1,2) e b(3,4)
durante l'esecuzione devo immettere una stringa in input
se la stringa è "uno" il programma dovrà eseguire l'operazione 1+2
se invece è "due" l'operazione 3+4
usando IF è tutto semplice ma nel mio programma gli array sono + di 500 e vorrei evitare di scriver 500 istruzioni IF!!

qualcuno è così gentile da scrivermi il codice dell'esempio che ho fatto?

Grazie.

LeleFT
19-10-2005, 16:08
Credo che la cosa si "risolva semplicemente" utilizzando il costrutto switch() a patto, però, che l'utente digiti un numero e non una stringa.


int lettura;
try {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
String valore = br.readLine();
if ( !valore.equals("") ) {
lettura = Integer.parseInt( valore );
} else {
lettura = 0;
}
switch (lettura) {
case 1:
faiQuelloCheDeviFare();
break;
case 2:
faiPureQualcosAltro();
break;
...
case 65536:
eccoLUltimaScelta();
break;
}
} catch (Exception e) { e.printStackTrace(); }

Se tutti gli array che hai sono bidimensionali, puoi crearne uno tridimensionale facendo in modo che il valore della mia variabile lettura venga utilizzata per indicizzare l'array corretto...


Ciao. :ciauz:

bolzman
19-10-2005, 16:26
ma così non si rivolve il problema di scrivere 500 istruzioni diverse...
provo a spiegarmi meglio

se inserisco in input "a" si esegue
x=a[0]+a[1];

se inserisco in input "b" si esegue
x=b[0]+b[1];

ma nel codice ci deve essere solo UNA istruzione di assegnamento per x

si può fare?

tenchiu.

LeleFT
19-10-2005, 16:55
Certo... usando un array bidimensionale:


int [][] mioArray = new int[500][2];
int i, j;

mioArray[0][0] = 1;
mioArray[0][1] = 2;
mioArray[1][0] = 3;
mioArray[1][1] = 4;
...

// Chiedo in input un numero intero (e non una lettera):
...
int lettura = Integer.parseInt( valore );

// Ora faccio i calcoli:
x = mioArray[lettura][0] + mioArray[lettura][1];

Ciao. :ciauz:

bolzman
19-10-2005, 17:07
ti ringrazio
ciao. :ciauz:

Loading