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

我试图在特定的时间间隔内获取日期,因此我尝试使用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());
} 
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 is
val
可能重复。你已经声明了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)