-4

如果字符串有值,我的代码可以正常工作。但是,如果字符串为空,则会发生应用程序强制关闭。如何处理空字符串值?请帮帮我。

String value;
int value1;
String completedate;
e01 = (Button) findViewById(R.id.e01);

    case R.id.e01:
        value = e01.getText().toString();
        if (value != null) {
            value1 = Integer.parseInt(value);

            completedate = String.format("%02d", value1) 
                         + String.format("%02d", mMonth) 
                         + mYear;

            Toast.makeText(this, url +completedate, Toast.LENGTH_SHORT).show();
         } else {
            Toast.makeText(this, "Date not Available", 
            Toast.LENGTH_SHORT).show();
        // string is Null......
         }
         break;
4

1 回答 1

2

这就是问题。

假设您的按钮文本是""(无文本)。当value = e01.getText().toString();被调用时,value现在的值为""(empty String, NOT null)。因此,它满足if条件。然后它会尝试解析""Integer,这将为您提供NumberFormatException然后强制关闭您的应用程序。

     value=e01.getText().toString();
     if(value!=null){

           value1 =Integer.parseInt(value);

如果您确定 Button 的文本将是一个整数,您只需将 if 条件更改为

if(!value.equals(""))

但是如果按钮的文本可能是一些非整数值,请改用try-catch

    try{
        value1 =Integer.parseInt(value);

        // parsed successfully

        completedate=  String.format("%02d", value1) +   String.format("%02d",   
        mMonth)  +mYear;

        Toast.makeText(this, url +completedate, Toast.LENGTH_SHORT).show();

    }catch(NumberFormatException e){
        // value cannot be parsed to an integer

        Toast.makeText(this, "Date not Available", 
        Toast.LENGTH_SHORT).show();
    }
于 2013-08-15T11:45:26.927 回答