没有语法错误,从逻辑上讲,一切似乎都很好。我一直试图调试这段代码好几天,我不明白它为什么会崩溃。我有一个if / else部分代码可以完成大部分工作,这是唯一一个不断崩溃的部分,其他部分工作正常。
public void Convert(View v)
{
String jdate = editText1.getText().toString();
String sdate = editText2.getText().toString();
Calendar date = Calendar.getInstance();
//converts julian date to calendar date
if (!jdate.isEmpty() && sdate.isEmpty())
{
jdate = String.format("%04d", jdate);
int intyear = Integer.parseInt(Character.toString(jdate.charAt(0)));
int intdayofyear = Integer.parseInt(jdate.substring(1));
if (intdayofyear > 365) intdayofyear = 365;
editText1.setText(intyear + intdayofyear);
String year = Integer.toString(date.get(Calendar.YEAR));
year = year.substring(0, 3) + Character.toString(jdate.charAt(0));
intyear = Integer.parseInt(year);
date.set(Calendar.YEAR, intyear);
date.set(Calendar.DAY_OF_YEAR, intdayofyear);
editText2.setText(Calendar.MONTH + "/" + Calendar.DAY_OF_MONTH + "/" + Calendar.YEAR);
datePicker1.init(
date.get(Calendar.YEAR),
date.get(Calendar.MONTH),
date.get(Calendar.DAY_OF_MONTH), new OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker view,
int year, int monthOfYear,int dayOfMonth) {
editText2.setText(monthOfYear+1 + "/" + dayOfMonth + "/" + year);
}});
}
这应该做的是取一个4位数字并将其转换为日历日期并将其显示在日期选择器和文本字段上。
答案 0 :(得分:1)
目前还不清楚实际问题是什么,但这是一个问题:
String.format
需要一个整数参数才能返回String
,否则会抛出IllegalFormatConversionException
jdate = String.format("%04d", jdate);
^
SimpleDateFormat
可用于格式化日期