Oppure

Loading
06/01/13 11:08
luca95
Ciao a tutti ho iniziato da poco a programmare in Java e mi si è presentato un problema che non so proprio come risolvere:
Ho una casella di testo in cui può essere inserito massimo un carattere, e dopo bisogna controllare se questo carattere è contenuto in un vettore ma mi dice che non è possibile confrontare un editable (il tipo della variabile che prende ciò che viene inserito nella casella di testo con una stringa o un carattere. Come posso fare? :-D
aaa
06/01/13 12:37
Bonny
Non so se lo sai ma in Java le stringhe si confrontano con il metodo boolean equals(String str)
Esempio:
String str = "ciao";

if(str.equals("ciao"))System.out.println("Le stringhe sono uguali");



Nel caso tuo:
if(textfield.getText().equals("stringa")) 
aaa
06/01/13 12:38
luca95
No non lo sapevo :-D
aaa
06/01/13 12:55
Bonny
Altra cosa che sicuramente userai è il costrutto switch, nelle versioni di Java < 6 funzionava solo con i numeri interi, ma ora dalla versione 7 funziona anche con le stringhe:
String str = "xxxx";

switch(str){

  case "ciao": // ...
     break;
  case "xxxx": // ....
     break;
}
aaa
08/01/13 18:53
vorrei inoltre aggiungere che le stringhe sono molto insidiose, infatti

String a = "ciao";
String b = "ciao";
String c = new String("ciao");

System.out.println(a==b) //true
System.out.println(b==c) //false


QUesto perchè l'operatore == confronta se le due variabili puntano allo stesso oggetto in memoria, e dato che assegnare a una variabile String un valore come se fosse un dato primitivo, trasforma questa variabile in un oggetto speciale all'interno della jvm, il confronto risulterà false.

Quindi come già stato detto in precedenza, java ci viene incontro con il metodo equals(), che controlla solamente che il testo all'interno di un dato oggetto string sia uguale a quello contenuto in un altro oggetto String.

Spero di non aver detto marranate :rofl: