字符串数组returns空指针异常

String array returns null pointer exception

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

我尝试向字符串数组添加一个值,但它引发了一个空指针异常,为什么?

编辑 1:

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++;
}

我试图在特定的时间间隔中获取日期,所以我试图使用 java 日历并操作我的代码,但可能我无法正确处理。

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

你可以使用这个code.if你想要动态字符串数组,你应该使用列表或映射。

让我们检查一下您的代码:

a=10.00;
b=11.00;

由此我们可以假设 abDouble 的类型,因此您不能使用 double cal = Double.parseDouble(a) 来获得 double价值。如果 ab 的类型是 String:

,这将是正确的
String a="10.00";
String b="11.00";

下一行:

mor_names=new String[]{};

将初始化 字符串数组。 {} 括号与数组一起使用,以使用以下值初始化数组:

String[] mor_names = {"Hello", "World", "!"};

和这一样:

String[] mor_names = new String[]{"Hello", "World", "!"};

你想给数组赋值,所以你可以像这样初始化你的数组:

String[] mor_names = new String[7]{};

因此,在 mor_names 中存储的值不能超过索引为 0 到 6 的 7。

如果您想要更灵活的方法,请使用 ArrayList:

ArrayList<String> mor_names = new ArrayList<String>();

这将创建一个 "dynamic array",您可以在其中 addremoveget 您的 String 对象。

循环:

for(double cal = Double.parseDouble(a) ; cal<=Double.parseDouble(b) ; )

让我们像之前提到的那样解决一件事,假设 abdouble.

的类型
for(double cal = a ; cal <= b ; )

首先,cal 变量被初始化为 a 的值。 For 是一个循环,它将在 {} 括号之间重复代码,直到 cal <= b 为真。你在这个循环中递增 cal 值,但这是不必要的 - 你可以这样做:

for(double cal = a ; cal <= b ; cal+=0.15)

也就是说,每次循环内的代码执行到最后,cal都会增加0.15。然后,如果 cal 小于或等于 b,代码将重复。否则循环将结束。

如果您尝试将 String 值分配给未初始化的数组,

NullPointerException 会上升。但这不是这里发生的事情,因为 mor_names 不是 null.

您应该在 java 中阅读有关初始化变量以及使用数组和容器的内容。祝你好运。

编辑 1:

您提供的数据不完整。您应该提供使您的问题可靠的所有内容,尤其是对您要归档的内容的严格和具体的描述。

了解 How to parse JSON in Java and Java - Date & Time。使用google并理解阅读。

关于使用堆栈溢出你应该开始here.

再来一次,祝你好运。