Newsgroup: it.comp.java
Titolo: delucidazioni sulla classe string

premetto che sono un vero principiante di java...
sto scrivendo un programmino che calcola il peso giusto di una persona in
base all'altezza, all'età e al sesso. Quando l'utente inserisc i dati, ho
messo delle istruzioni di controllo, l'unica cosa che non sono riuscito a
fare è far funzionare il controllo sulla variabile sesso: sesso è di tipo
string. Perchè queste istruzioni non vanno bene? Quando eseguo il programma,
anche se metto M,m,F,f mi dice "Valore non corretto".
NB: inputBox e outputBox sono classi di un package esterno che ho scaricato
da internet, e sto usando quelle.
sesso = inputBox.getString("Inserisci il sesso (es M o F)");
while (sesso != "m" | sesso != "M" | sesso != "f" | sesso != "F")
 {
     outputBox.printLine("Valore non corretto");
     sesso = inputBox.getString("Inserisci il sesso (es M o F)");
  }
ps se c'è un altro modo di inserire input da rastiera, mi potete dire
quale???
grazie in anticipo!

 while (sesso != "m" | sesso != "M" | sesso != "f" | sesso != "F")
Cosi' facendo confronti l'oggetto 'sesso' con la stringa "m" etc, e
non il contenuto dell'oggetto. Devi usare sesso.compareTo("m") o
sesso.compareToIgnoreCase("M") che risolve i problemi di maiuscolo/minuscolo.
Vedi la documentazione di Java su 
http://java.sun.com
Davide

 
beh sesso è una stringa e vuoi fare un controllo scrivi
while(!sesso.equalsIgnoreCase("m") | !sesso.equalsIgnoreCase("f")) {
  etc...
}

 ha scritto nel messaggio
news:a3612r$15vain$3...@ID-18487.news.dfncis.de...

grazie, ora funziona!

 ha scritto nel messaggio
news:9uy58.4350$om6....@news1.tin.it...

... ho parlato troppo presto...
ho fatto cosě:
sesso = inputBox.getString("Inserisci il sesso (es M o F)");
  while(sesso.equalsIgnoreCase("m") != true | sesso.equalsIgnoreCase("f") !=
true)
  {
   outputBox.printLine("Valore non corretto");
   sesso = inputBox.getString("Inserisci il sesso (es M o F)");
  }
questo perché il metodorende un boolean, perň continua a darmi lo stesso
errore, ovvero qualsiasi valore inserisca mi dice sempre valore errato....

 errore, ovvero qualsiasi valore inserisca mi dice sempre valore errato....
Temo che abbia ragione lui... sei proprio sicuro che ci vada un OR lì in
mezzo?
Inoltre il "!= true" funzionerà anche, ma è così brutto da vedere...
Ciao, Cris
-- 
Cristian Veronesi ><((((º> 
http://www.crpa.it
"Do you pine for the nice days of minix-1.1, when men were men and wrote
their own device drivers?" (Linus Torvalds, comp.os.minix, 05-10-1991)

 true)
In effetti dovresti usare && e non || (per di più hai usato l'OR tra bit invece
dell'OR logico), altrimenti la tua condizione si legge come "finchè il sesso non
è 'm' oppure il sesso non è 'f'", il che sarà sempre vero... (se il sesso è m
allora non è f => il secondo ramo è verificato, se il sesso è f allora non è m
=> il primo ramo è verificato).
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 ha scritto nel messaggio
news:3C56C431...@sdb.it...

infatti me ne sono accorto anch'ìo poco dopo aver scritto il messaggio, che
ci voleva &&... comunque grazie a tutti per l'aiuto! Adesso ho scoperto un
paio di cose interessanti sulla classe string...