Salve ragazzi,
per esercitarmi stavo scrivendo un programmino che, data una stringa, verifichi che il numero di caratteri maiuscoli sia uguale al numero di caratteri minuscoli.
Ecco come l'ho pensato:
codice:
public class Uguali {
private String str;
public Uguali(String str){
this.str = str;
}
public void setStr(String str) {
this.str = str;
}
public String getStr() {
return str;
}
// Metodo controllo
public Boolean isCaratteriUguali(){
int countLower = 0;
int countUpper = 0;
for (int i = 0; i<this.str.length(); i++){
Character c = ((Character)str.charAt(i));
if(c.equals(c.toString().toUpperCase()))
countUpper++;
else
countLower++;
}
boolean valore = false;
if(countUpper==countLower)
valore = true;
return valore;
}
}
E la classe testUguali che esegue:
codice:
public class testUguali {
public static void main (String[] args){
Uguali stringa1 = new Uguali("R1_3j");
System.out.println("L'operazione su "+stringa1+" risulta: "+stringa1.isCaratteriUguali());
}
}
Per fare una prova ho istanziato la stringa1 dandogli come valore R1_3j. Una volta lanciato però invece di stamparmi la variabile, mi da il suo indirizzo e di conseguenza il metodo booleano isCaratteriUguali() sarà sempre false. Probabilmente l'errore sarà banale, ma non capisco perchè mi stampi l'indirizzo visto che la classe Uguali ha un costruttore definito correttamente. Dove ho sbagliato?
Grazie in anticipo!