2013-05-24 9 views
7

Bu hataya neyin neden olduğunu zaten biliyorum, bir kullanıcı diyalog kutusuna herhangi bir şey girmediğinde durumu nasıl ele alacağımı bilmiyorum. dizeyi int olarak ayrıştıran düğme. Boş bir dizeyi int olarak ayrıştırılamaz, dolayısıyla bir hata atar. Bunu nasıl yapacağım konusunda biraz araştırma yaptım, ancak işe yarayacak tatmin edici bir sonuç bulamadı.java.lang.NumberFormatException: Geçersiz int: "" in

Sorun: Kodun kalanını çalıştırmadan önce, iletişim kutusunun içinde metin olup olmadığını nasıl kontrol edersiniz?

cevap

10

Bazı kod sözdizimi ile yardımcı olacağını ama temelde

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; } 

Ayrıca, bir try/catch ile çevreleyen ve bir NumberFormatException yakalamak Benim Crash Uygulaması. gibi İstisna neden Ans

denemede kod yerleştirin Simple- olan { }

ve

catch()

Blok Bu kod snip.This benim için çalışıyor.

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); 
    } 


} 
1

Sorun: Eğer kod kalanını çalıştırmak çalışmadan önce diyalog kutusu, içindeki metni olup olmadığını görmek için nasıl kontrol ederim.

Çözüm: Bir if beyanı. Eğer fazladan bağımlılık ayırabiliyorsanız o da Unicode işlemesi nedeniyle

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

, ben yerine Döşeme/IsEmpty ait StringUtils.isBlank kullanmak, Ortak Lang StringUtils çekmek istiyorum. Daha sonra aynı hata veriyorsa oldu uygun bir mesaj

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

yazdırmak