Android Integer.parseInt引发NumberFormatException?

Android Integer.parseInt引发NumberFormatException?,android,datepicker,Android,Datepicker,我在应用程序中使用了日期选择器。我试图做的是在文本字段中获取已经设置的日期,并在Datepicker控件上显示该日期。但当我使用 Integer.parseInt(splittedDate[2]) //i.e the year column. 当我看到调试splittedDate时,它包含三个值,这三个值都很好。但在分析最后一个索引的年份列时抛出异常。我不明白为什么会这样。请帮我摆脱这一切。下面是Datepicker的CreateDialog方法的实现 @Override protecte

我在应用程序中使用了日期选择器。我试图做的是在文本字段中获取已经设置的日期,并在Datepicker控件上显示该日期。但当我使用

Integer.parseInt(splittedDate[2])  //i.e the year column. 
当我看到调试splittedDate时,它包含三个值,这三个值都很好。但在分析最后一个索引的年份列时抛出异常。我不明白为什么会这样。请帮我摆脱这一切。下面是Datepicker的CreateDialog方法的实现

@Override
protected Dialog onCreateDialog(int id) {
    if (id == DATE_DIALOG_ID) {
        if (birthDate.getText().toString().equalsIgnoreCase(""))
            return new DatePickerDialog(this, mDateSetListener, mYear,
                    mMonth, mDay);
        else {
            String[] splittedDate = birthDate.getText().toString().split("-");

            try{

                Log.i("Month String", splittedDate[0]);
                mMonth = Integer.parseInt(splittedDate[0]);
                Log.i("Day String", splittedDate[1]);
                mDay = Integer.parseInt(splittedDate[1]);
                Log.i("Year String", splittedDate[0]);
                mYear = Integer.parseInt(splittedDate[2]);

            }
            catch(Exception e)
            {
                Log.e("Number Format Exception Message: ",e.getMessage());
            }

            return new DatePickerDialog(this, mDateSetListener, mYear,
                    mMonth, mDay);

        }

    return null;
}
以下是logCat信息:

 09-05 16:21:54.722: E/AndroidRuntime(28596): FATAL EXCEPTION: main
 09-05 16:21:54.722: E/AndroidRuntime(28596): java.lang.NumberFormatException: unable to parse '1970 ' as integer
 09-05 16:21:54.722: E/AndroidRuntime(28596):   at java.lang.Integer.parse(Integer.java:383)
 09-05 16:21:54.722: E/AndroidRuntime(28596):   at java.lang.Integer.parseInt(Integer.java:372)
 09-05 16:21:54.722: E/AndroidRuntime(28596):   at java.lang.Integer.parseInt(Integer.java:332)
 09-05 16:21:54.722: E/AndroidRuntime(28596):   at com.test.project.activity.DetailActivity.onCreateDialog(DetailActivity.java:332)
试试这个

Integer.parseInt(splittedDate[2].toString())
试试这个

Integer.parseInt(splittedDate[2].toString())

出生日期
字段中插入值的位置张贴代码。检查是否不应有任何
空格
。应该只有数字。从例外情况来看,
'1970'
似乎包含一个空格。仔细检查生日字段。

生日字段中插入值的地方张贴代码。检查是否不应有任何
空格
。应该只有数字。从例外情况来看,
'1970'
似乎包含一个空格。仔细检查birthDate字段。

你能发布导致异常的字符串吗?你能上传stacktraceit在splittedDate数组中的基本第三个元素吗…其值为1970不知道它是否相关,但你注意到第三个打印是
Log.i(“年份字符串”,splittedDate[0])而不是
Log.i(“年份字符串”,splittedDate[2])?嗯,通常年份是多少?
NumberFormatException
是一个非常自解释的概念,它意味着
字符串不包含可解析的整数。字符串中的字符必须全部是十进制数字,但第一个字符可能是ASCII减号。您能发布导致异常的字符串吗?您能上传stacktraceit在splittedDate数组中的基本第三个元素吗…其值为1970不知道是否相关,但是您是否注意到第三个打印是
Log.i(“年份字符串”,splittedDate[0])而不是
Log.i(“年份字符串”,splittedDate[2])?嗯,通常年份是多少?
NumberFormatException
是一个非常自解释的概念,它意味着
字符串不包含可解析的整数。字符串中的字符必须全部是十进制数字,但第一个字符可能是ASCII减号。u由于“1970”中包含空格而导致错误,请删除它,然后分析itu getting error,因为“1970”中包含空格,请删除它,然后分析它。情况就是这样。我将.trim()添加到我的值中,效果很好。事实就是这样。我在我的值中添加了.trim(),效果很好。