有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将二维字符串数组转换为二维整数数组

我不断得到一个空指针异常,我不知道为什么。请解释一下

public static int[][] convertStringToInt(String[][] array){

    int [][] numbers = new int [array.length][];
    for(int row = 0; row < array.length; row++)
    {
        numbers[row] = new int [array[row].length];                //line 48
        for(int col = 0; col < array[row].length; col++)
        {
            numbers[row][col] = Integer.parseInt(array[row][col]);
        }
    }
    return numbers;
}



public static void main (String[] agrs)
{

    File selectedFile = selectFile("Enter fileName for double number, EX:    
                      decimalNumbers.csv");
    if( !selectedFile.exists())
    {
       System.out.print("\nFile does not exit, program terminating\n\n");
       System.exit(1);
    }

    int countLines = countLinesInFile(selectedFile);
    String cities [][] = loadArrayFromFile(selectedFile, countLines);

    int [][] unitsSold = convertStringToInt(cities); //line 157

    System.out.println(unitsSold);
 }

以下是输入文件名时出现的错误

Exception in thread "main" java.lang.NullPointerException
at labReview.ArrayOfArrays.convertStringToInt(ArrayOfArrays.java:48)
at labReview.ArrayOfArrays.main(ArrayOfArrays.java:157)

共 (2) 个答案

  1. # 1 楼答案

    方法convertStringToInt运行良好。您描述的异常NullPointerException可能发生在该行中

    numbers[row] = new int[array[row].length];
    

    如果array[row]null。因此,发生错误的原因可能是loadArrayFromFile方法返回了null行,例如:

    String[][] s = { { "1", "2", "3" }, { "1" }, null, { "3", "4" } };
    

    打印方法loadArrayFromFile返回的数组中的元素,查看是否有null

  2. # 2 楼答案

    我猜,你的城市在某个索引处有一个空数组

    String cities [][] = loadArrayFromFile(selectedFile, countLines);
    

    试着打印你的城市数组,如下所示

    for(String[] cityArr : cities){
     System.out.println("Cities at Index "+i+" is : "+citiArr);
    }
    

    如果在任何索引处看到一个“null”值,那么在将其添加到cities数组时,只要有null,就修改loadArrayFromFile以替换黑色数组

    ....
    
    if(citiArr==null){
     citiArr = new String[]{};
    }
    cities[i][j]=citiArr;
    
    ....