public class StringToDouble {
public static void main(String[] args){
String s="1,2;3,4;5,6;7,8";
String[] s1=s.split(";");
double[][] a=new double[s1.length][];

for(int i=0;i<s1.length;i++){
String[] s2=s1[i].split(",");
for(int j=0;j<s2.length;j++){
//System.out.print(s2[j]);
a[i][j]=Double.parseDouble(s2[j]);//此处标记
}
}

for(int i=0;i<s1.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]);
}System.out.println();
}
}}
这个程序为什么会在标记处抛出NullPointerException呢?

解决方案 »

  1.   

    此问题已经自己解决,因为没有对double d[i]进行初始化,程序如下就正确了:public class StringToDouble {
    public static void main(String[] args){
    String s="1,2;3,4;5,6;7,8";
    String[] s1=s.split(";");
    double[][] a=new double[s1.length][];

    for(int i=0;i<s1.length;i++){
    String[] s2=s1[i].split(",");
    a[i]=new double[s2.length];
    for(int j=0;j<s2.length;j++){
    //System.out.print(s2[j]);
    a[i][j]=Double.parseDouble(s2[j]);
    }
    }

    for(int i=0;i<s1.length;i++){
    for(int j=0;j<a[i].length;j++){
    System.out.print(a[i][j]);
    }System.out.println();
    }
    }}
      

  2.   

    double[][] a=new double[s1.length][];
    有错,定义数组时,要给出数组长度
    改为:double[][] a=new double[s1.length][2];
      

  3.   


    public static void main(String[] args){ 
    String s="1,2;3,4;5,6;7,8"; 
    String[] s1=s.split(";"); 
    List<Double> list=new ArrayList<Double>();
    for(int i=0;i <s1.length;i++){ 
    String[] s2=s1[i].split(","); 
    for(int j=0;j <s2.length;j++){ 
    list.add(Double.parseDouble(s2[j]));//此处标记 

    }
    for(int j=0;j <list.size();j++){ 
    System.out.println(list.get(j)); 
    } }
      

  4.   

    你的想法不对,这属于动态数组,为什么不用arraylist呢?