|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
[JAVA] if con molteplici or
Dunque:
ho una classe java che ha un metodo che recupera un parametro String. tale parametro puo' avere molteplici valori e all'interno del metodo c'è un if così strutturato if((param.equals("QA"))||(param.equals("aA"))||(param.equals("zA"))|| (param.equals("sdQA"))||(param.equals("QAw1"))||(param.equals("QAs"))|| (param.equals("QzA"))||(param.equals("QAaaq1"))||(param.equals("zzz"))|| (param.equals("oo"))) { .....codice } insomma per intenderci ci sono vari OR(e potrebbero anche crescere) dal punto di vista funzionale tutto ok ma da quello della sintassi mi sembra stia diventando unpo' strano. come posso modificare una simile sintassi per renderla leggibile??? ho visto che switch si usa solo per i char e per gli int; ho pensato magari di mettere tutte le stringhe in un array(o un vettore) e poi usare un if tipo: if(param è nel vettore) { .....codice } mi conviene fare qualcosa di simile o è meglio lasciare il codice come è??? suggerite qualche altra soluzione?? grazie Ultima modifica di prazision : 04-07-2005 alle 21:17. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Guarda, dipende dalle parole che devi "scansionare".
Facendomi un gran ![]() ![]() Sicuramente più leggibile, ma, ripeto, è un gran ![]() ![]()
__________________
My gaming placement |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
e la soluzione di usare un vettore o un array non va bene???
peggiorerebbe molto le prestazioni?? grazie |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Apr 2005
Messaggi: 224
|
Usando un array sicuramente il check è più leggibile ma dovrai comunque aggiungere la definizione dell'array da qualche parte che aggiungerà un bel blocco, cmq a livello di prestazioni non credo che ci siano differenze tangibili e, a dirla tuta, non metterei la mano sul fuoco su quale sia più performante come soluzione
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
grazie mille(e il vettore?)
(complimenti per il nick, lo adoro alvaro) |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
e se facessi qualcosa di questo tipo?:
Codice:
boolean eseguito=false; if (a=="ciao"){ //codice eseguito=true; } if (a=="cucco" && !eseguito){ //codice eseguito=true; } if (a=="ciccio" && !eseguito){ //codice eseguito=true; } credo ke così tu possa guadagnare qualcosina in leggibilità... P.S. Ricordati di azzarare eseguito se questa parte di codice la devi eseguire piu' volte.....
__________________
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
grazie
si sarebbe più ordinato sicuramente ma forse troppo lungo cmq grazie |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
Se invece il problema è solo di carattere 'estetico' puoi sempre ricorrere al costrutto dell'array: Codice:
Set<String> stringhe = Arrays.asList(new String[] { "aa", "BB", "ciccio", "nonna papera", "topolino", "pippo" }); if (stringhe.contains(parametro)) { // codice }
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
grazie
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
La soluzione più leggibile?
Quella che hai scritto tu ![]() si capisce subito che è un OR di più condizioni, piu in fretta che non vedere dichiarazioni di array, riempimento dello stesso, cicli for, lo switch poi non ne parliamo.... L'unica cosa che può aumentare la leggibilità è crearti una funzione apposita che gli dai la stringa e ti restituisce un booleano e metti la chiamata alla funzione come condizione dell'if.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
a me(da ignorante vero) piace molto quella che ha proposto angus.
difatti mi sono andato a vedere la classe Arrays che non conoscevo cmq grazie |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
![]()
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
devo disintegrare la mia attitudine vintage
![]() ![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:43.