Java 字符串数组返回空指针异常
我试图在特定的时间间隔内获取日期,因此我尝试使用java日历并操作代码,但可能无法正确获取日期。Java 字符串数组返回空指针异常,java,string,pointers,exception,null,Java,String,Pointers,Exception,Null,我试图在特定的时间间隔内获取日期,因此我尝试使用java日历并操作代码,但可能无法正确获取日期。String a=“10.00”; DateFormat time = new SimpleDateFormat("HH:mm"); try { timefrom =(Time) time.parse(json.get(position).toString()); timeto = (Time) time.parse(json.get(position).toString()); }
String a=“10.00”;
DateFormat time = new SimpleDateFormat("HH:mm");
try
{
timefrom =(Time) time.parse(json.get(position).toString());
timeto = (Time) time.parse(json.get(position).toString());
}
catch (ParseException e)
{
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
System.out.println("times are :"+timefrom+" "+timeto+" "+position);//null null 0 was output for this
for(Time i=timefrom;i.equals(timeto);)
{
cal.setTime(i);
System.out.println("values are:" + i);
mor_names[val]=(String) i.toString();
cal.add(Calendar.MINUTE, 15);
System.out.println("values are:" + mor_names[val]);
String newTime = df.format(cal.getTime());
try
{
i=new java.sql.Time(time.parse(newTime).getTime());
}
catch (ParseException e)
{
e.printStackTrace();
}
val++;
}
字符串b=“11.00”;
int-val=0;
String[]mor_names=新字符串[10];
对于(double-cal=double.parseDouble(a);cal让我们回顾一下您的代码:
String a="10.00";
String b="11.00";
int val=0;
String [] mor_names=new String[10];
for(double cal=Double.parseDouble(a); cal<=Double.parseDouble(b);){
mor_names[val]=(Double.toString(cal));
System.out.println("values are:" + mor_names[val]);
val++;
cal=cal+0.15;
}
由此我们可以假设a
和b
是Double
的类型,因此不能使用Double-cal=Double.parseDouble(a)
来获得Double
值。如果a
和b
是String
类型,这是正确的:
a=10.00;
b=11.00;
下一行:
String a="10.00";
String b="11.00";
将初始化字符串的空数组。{}
括号与类似的数组一起使用,以使用值初始化数组:
mor_names=new String[]{};
这是一样的:
String[] mor_names = {"Hello", "World", "!"};
您希望将值分配给数组,以便可以像这样初始化数组:
String[] mor_names = new String[]{"Hello", "World", "!"};
这样,索引从0到6的mor_name
中存储的值就不能超过7
如果您想要更灵活的方法,请使用ArrayList
:
String[] mor_names = new String[7]{};
假设a
和b
是double
类型,让我们像前面提到的那样修复一件事
for(double cal = Double.parseDouble(a) ; cal<=Double.parseDouble(b) ; )
这意味着每次循环内的代码执行到最后,cal
将递增0.15
。如果cal
小于或等于b
,代码将重复。否则循环将结束
NullPointerException
如果尝试将String
值分配给未初始化的数组,则会出现异常。但这不是这里发生的情况,因为mor\u names
不是null
您应该阅读有关在java中初始化变量和使用数组和容器的内容。祝您好运
编辑1:
a=10.00;
b=11.00;
mor_names=new String[]{};
for(double cal=Double.parseDouble(a);cal<=Double.parseDouble(b);) {
mor_names[val]=(Double.toString(cal));
System.out.println("values are:" + mor_names[val]);
val++;
cal=cal+0.15;
}
你提供的是不完整的数据。你应该提供所有能让你的问题变得坚实的东西,特别是对你试图归档的内容的严格和具体的描述
阅读并理解。使用谷歌并理解阅读
另外,关于使用堆栈溢出,您应该开始
再来一次,祝你好运。Java数组中声明的Where isval
可能重复。你已经声明了0大小的数组。a和b变量类型是什么?在发布答案之前,请查看预览
,并确保缩进正确。
for(double cal = Double.parseDouble(a) ; cal<=Double.parseDouble(b) ; )
for(double cal = a ; cal <= b ; )
for(double cal = a ; cal <= b ; cal+=0.15)