|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2013
Messaggi: 85
|
[JAVA] Creare elenco di opzioni
Ciao a tutti, sono un principiante di java e sto provando a creare un piccolo programmino a riga di comando.
Vorrei ottenere una specie di menù che faccia le seguenti cose: scegli tra le seguenti opzioni 1 - opzione 1 2 - opzione 2 3 - opzione 3 : QUA DIGITO UNA DELLE OPZIONI TIPO 2 opzione 2 selezionata ecc... per farlo ho realizzato il seguente codice Codice HTML:
import java.util.Scanner;
public class prova{
public static void main(String[] args) {
System.out.println ("Scegli tra le seguenti opzioni:");
System.out.println ("1 - opzione 1");
System.out.println ("2 - opzione 2");
System.out.println ("3 - opzione 3");
System.out.print(": ");
Scanner inputopzione = new Scanner(System.in);
if (inputopzione.nextInt() == 1 ) {
System.out.println ("opzione 1");
} else if (inputopzione.nextInt() == 2 ) {
System.out.println ("opzione 2");
} else if (inputopzione.nextInt() == 3){
System.out.println ("opzione 3");
} else {
System.out.println ("errore");
}
}
}
grazie dell'attenzione |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Perché ogni qualvolta richiami inputopzione.nextInt() l'oggetto Scanner aspetta un nuovo intero nello streaming di input.
Per risolvere devi leggere solo una volta l'input, salvarlo in una variabile ed usare quella nelle condizioni dell'if, al posto della chiamata a nextInt. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2213
|
oppure usa uno switch:
Codice:
switch (inputopzione.nextInt()) {
case 1: System.out.println("opzione 1");
break;
case 2: System.out.println("opzione 2");
break;
case 3: System.out.println("opzione 3");
break;
default: System.out.println("Error");
break;
}
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | Iliad Fibra 5Gb |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2013
Messaggi: 85
|
Grazie mille ad entrambi! Ho testato ambedue le soluzioni e funzionano perfettamente
Secondo voi quale metodo è preferibile utilizzare in questo caso? (Ad occhio la soluzione con lo switch mi pare meno "pasticciata" di quella con gli if) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2213
|
Il piccolo vantaggio dello switch (oltre alla maggiore pulizia) in questo caso è proprio che puoi fare il tutto senza inizializzare una variabile (assegnazione che ha un infinitesimo, ma comunque presente, costo prestazionale).
Ricordati come regola che se stai facendo tanti else if in sequenza confrontando sempre uno stesso valore probabilmente puoi sostituirlo con uno switch.
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | Iliad Fibra 5Gb |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2013
Messaggi: 85
|
Perfetto! Grazie delle dritte
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:18.



















