View Full Version : [Java]non credo di aver capito bene il return
Allora, diciamo pure che è un certa ora e che il cervello ha traslocato...
public boolean isStringLC()
{
boolean result = false;
char[] charedStr = this.toCharArray();
for(int i=0;i<charedStr.length;i++)
result = Character.isLowerCase(charedStr[i]) && result;
return result;
}
tanto per fare un esempio, non molto lontano dalla verità comunque...
la mia domanda è: perchè sta maledetta funzione mi ritorna sempre il valore con cui ho inizializzato la variabile result e non il valore che essa assume dopo il ciclo for?
grazie mille
P.S.: ...mi sto già vergognando... :fagiano:
P.P.S.: ...lo giuro!!
questa roba:
public class mainClass
{
public static void main(String[] args)
{
String greet = "Ciao";
returnString(greet);
}
public static String returnString(String x){
return x;
}
}
a me non produce nulla, non torna nulla, dopo l'esecuzione la console è vuota... :confused:
forse è un bug... o forse sto sognando... :coffee: :eekk: :what: :ncomment:
public boolean isStringLC()
{
boolean result = false;
char[] charedStr = this.toCharArray();
for(int i=0;i<charedStr.length;i++)
result = Character.isLowerCase(charedStr[i]) && result;
return result;
}
tanto per fare un esempio, non molto lontano dalla verità comunque...
la mia domanda è: perchè sta maledetta funzione mi ritorna sempre il valore con cui ho inizializzato la variabile result e non il valore che essa assume dopo il ciclo for?Perché concettualmente è sbagliato. Si deve inizializzare result a true.
Mi sembra anche abbastanza logico: il metodo isLowerCase restituisce un boolean. Al primo carattere che non è lower-case, ritorna false. Quindi result diventa false da lì in avanti. Altrimenti se tutti i caratteri sono lower-case, allora farà sempre true && true, quindi true.
Tra l'altro, si potrebbe anche ottimizzare cosi:
boolean result = true;
char[] charedStr = this.toCharArray();
for(int i=0; result && i<charedStr.length; i++)
result = Character.isLowerCase(charedStr[i]);
return result;In questo modo al primo false esce dal for.
questa roba:
public class mainClass
{
public static void main(String[] args)
{
String greet = "Ciao";
returnString(greet);
}
public static String returnString(String x){
return x;
}
}
a me non produce nulla, non torna nulla, dopo l'esecuzione la console è vuota... :confused: Ma non hai stampato nulla sulla console. Il valore ritornato da returnString poi si "perde" visto che non lo usi.
franksisca
20-02-2007, 09:10
per stampare su console devi fare in questo modo:
System.out.print(str);
oppure, per stampare e andare a capo
System.out.println(str);
per il discorso delle boolean, conosci la logic a booleana????
se non la conosci, è lì il problema, se hai ancora problemi facci un fischio;)
Si si si scusate, la logica booleana la conosco... subito dopo aver postato ieri sera ho realizzato che inizializzare result a false avrebbe portato result ad essere sempre false indipendentemete dal valore del primo pezzo della condizione se così vogliamo chiamarlo...
purtroppo, facevo mille prove e non mi accorgevo del fatto che result era inizializzato a false... stendiamo un velo pietoso su ciò che ho postato ieri sera... dimenticatevene ve ne prego :D
soprattutto del secondo dei due post in cui pretendevo che return mi stampasse una stringa... mmmmm... diabolico...
bho non so forse ero ubriaco...
scusatemi ancora :fagiano:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.