2013-05-24 8 views
7

So già cosa causa questo errore, non so come gestire il caso quando un utente non inserisce nulla nella finestra di dialogo, quindi colpisce il pulsante che analizza la stringa in un int. Non può analizzare una stringa vuota in un int, quindi genera un errore. Ho fatto qualche ricerca su come farlo, ma non ho trovato un risultato soddisfacente che funzioni.java.lang.NumberFormatException: int non valido: "" in android

Problema: come si controlla se la finestra di dialogo contiene del testo, prima di provare a eseguire il resto del codice.

risposta

10

Alcuni codice avrebbe aiutato con la sintassi ma fondamentalmente

if ("".equals(text) // where text is the text that you get from an EditText or wherever you get it 
{ // give message to enter valid text; } 

Inoltre, è possibile circondare con un try/catch e prendere un NumberFormatException quindi stampare un messaggio appropriato

1

Problema: come si controlla se la finestra di dialogo contiene del testo, prima di provare a eseguire il resto del codice.

Soluzione: una dichiarazione if.

int parseToInt(String maybeInt, int defaultValue){ 
    if (maybeInt == null) return defaultValue; 
    maybeInt = maybeInt.trim(); 
    if (maybeInt.isEmpty()) return defaultValue; 
    return Integer.parseInt(maybeInt); 
} 

Se si può risparmiare la dipendenza in più, mi piacerebbe tirare in Comune Lang StringUtils, per usare StringUtils.isBlank al posto di assetto/EVuota, perché che gestisce anche Unicode.

1
String text = editText.getText().toString(); 
    if(!text.equals("") && text.matches("^\\d+$")){ 
     cast to int 
    } 
0

lo stesso errore stava causando il mio Applicazione per l'arresto. Ans è semplice-Inserire il codice che

try {}

e

catch()

blocco che causa eccezione, come questo codice snip.Questo funziona per me.

public void setAge(String age) { 

    final Calendar c = Calendar.getInstance(); 
    int yearCurrent = c.get(Calendar.YEAR); 
    try { 
     int yearPrev = (int) Integer.parseInt(age.substring(0, 4));//this line was causing the error 
     int ageYear=yearCurrent-yearPrev; 
     ageUser="Age : "+Integer.toString(ageYear); 
    } 
    catch(NumberFormatException numberEx) { 
     System.out.print(numberEx); 
    } 


}