2009-12-24 32 views
16

Non so cosa c'è di sbagliato con il codice qui sotto .... Sto ricevendo input da una casella di testo e inserendo l'input in una stringa. Se la casella di testo è vuota restituirà una stringa vuota. Nel seguente codiceControllo stringa vuota in Java

String[] str = new String[9]; 
    for(int i=0;i<9;i++){ 
     if(str[i].equals("")){ 
      System.out.println("set " + cmds[i] + " " + str[i]); 
      WriteThread.sendCommand("set " + cmds[i] + " " + str[i] + "\n", false); 
     } 
    } 

Nelle sopra codice str[i] memorizza il testo di input di textboxes e sto cercando di verificare se ogni elemento dell'array è vuota. Ho anche provato con str[i] == "" e str[i] == null ma senza fortuna. L'istruzione all'interno del blocco if se sto stampando la stringa str[i], non mostra nulla che significa che è vuota.

Sto facendo qualcosa nel modo sbagliato?

+1

Che cosa stai cercando di verificare? Controlla se la stringa è vuota e poi fai una stampa, e il risultato come dici è qualcosa come "set" + ... dato che non puoi vedere una stringa vuota :). Probabilmente vuoi testare la non condizione: cioè se (! Str [i] .equals ("")) .. – sateesh

+0

Davvero, semplice controllo se() condizione ... – ThinkJet

+0

Pensi di poter modificare la tua domanda per renderla più comprensibile? Dai commenti e dalle risposte, posso vedere che non sono l'unico che non è sicuro di quello che vuoi veramente ... :-( – KLE

risposta

27

Si potrebbe provare:

if (str[i] == null || str[i].trim().equals("")){ 
// your code 
} 
+2

ha funzionato per me .... Grazie mille .. –

+1

Questo non è Javascript. – vivek

0

Il codice di cui sopra viene eseguito solo se la stringa è vuota, è che il comportamento desiderato? Anche dichiarare str come nuovo proprio prima del ciclo praticamente garantisce che sarà vuoto.

Se si sta tentando di assegnare i valori dalle caselle di testo, è necessario disporre di tali assegnazioni da qualche parte prima del ciclo.

15

È possibile utilizzare il Apache Commons Lang per controllare una stringa:

if (StringUtils.isBlank(str[i]) { 
    ... 
} 

StringUtils.isBlank sta controllando se la stringa è null o vuoto (cioè se è uguale a "" quando tutti i caratteri vuoti vengono rimossi).

+0

cosa succede se qualcuno entra nello spazio? – Jony

+1

@AshishDonvir 'StringUtils.isBlank (" ")' restituisce 'true'. Se vuoi che questo test restituisca 'false', puoi usare' StringUtils.isEmpty (...) '. – romaintaz

0

in realtà ho provato a correre lo snippet di codice e ottenuto un NullPointerException sul tuo condizionale

str [i] .equals ("")

str [i] == null lavorato per me. Sei sicuro di aver inserito il codice giusto nella tua domanda. Sembra strano testare una stringa vuota di un array vuoto appena inizializzato.

0

Una soluzione molto semplice può essere così.

if(str[] != null && !str[].equals(""))