Originariamente inviato da andbin
Ma questo non centra con i tuoi conteggi/test. Hai usato la concatenazione delle stringhe e semplicemente viene invocato toString() sul tuo stringa1 (per ottenere un String da concatenare).
Ma nella tua classe Uguali NON hai ridefinito toString(), che rimane quindi quello ereditato da Object che ritorna quella forma particolare che hai visto.
Semplice: ridefinisci public String toString() { ....... }
Ma questo per un motivo: hai un Character e ci invochi equals passandogli un
String. Ed è sbagliato (per il equals di Character!)
Quindi o fai:
if (c
.toString().equals(c.toString().toUpperCase())
oppure potresti anche evitare tutti i giri di conversioni (ne fai troppe, da char -> Character, poi al fondo da boolean -> Boolean). Evita.
E comunque ci sarebbe lo stesso un problema di fondo: 1 _ 3 li tratti come "upper" perché toUpperCase non li cambia.