Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    3

    [JAVA] alternativa all'IF

    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.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Credo che la cosa si "risolva semplicemente" utilizzando il costrutto switch() a patto, però, che l'utente digiti un numero e non una stringa.
    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    3
    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.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Certo... usando un array bidimensionale:
    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    3
    ti ringrazio
    ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.