java.lang.NullPointerException:无法读取数组长度,因为“testing.survivalMatrixFicheiro”为空

时间:2021-01-23 21:41:51

标签: java arrays

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class testing {

    public static int[] populationVectorFicheiro;
    public static double[] survivalMatrixFicheiro;
    public static double[] birthMatrixFicheiro;
    public static double[][] matrizLeslieNaoInterativo = new double[survivalMatrixFicheiro.length + 1][birthMatrixFicheiro.length];

    public static void main(String[] args) throws FileNotFoundException {
        readFileInfo();
    }

    public static double[] formarVetor(String[] line) {
        double[] matrix = new double[line.length];
        for (int i = 0; i < line.length; i++) {
            String[] numbers = line[i].trim().split("=");
            matrix[i] = Double.parseDouble(numbers[i]);
        }
        return matrix;
    }

    public static double[] getValores(String[] linha) {
        double[] matriz = new double[linha.length];
        for (int i = 0; i < linha.length; i++) {
            String[] objeto = linha[i].split("=");
            matriz[i] = Double.parseDouble(objeto[1]);
        }
        return matriz;
    }

    public static int[] getTotalPopulacao(String[] linha) {
        int[] matriz = new int[linha.length];

        for (int i = 0; i < linha.length; i++) {
            String[] objeto = linha[i].split("=");
             matriz[i] = Integer.parseInt(objeto[1]);
        }

        return matriz;
    }

    public static void readFileInfo() throws FileNotFoundException{
        Scanner fileReader = new Scanner(new File("caes.txt"));
        String[] primeiraLinha = fileReader.nextLine().trim().split(",");
        populationVectorFicheiro = getTotalPopulacao(primeiraLinha);

        String[] segundaLinha = fileReader.nextLine().trim().split(",");
        survivalMatrixFicheiro = getValores(segundaLinha);
        for (int i=0; i< survivalMatrixFicheiro.length;i++){
            System.out.println(survivalMatrixFicheiro[i]);
        }


        String[] terceiraLinha = fileReader.nextLine().trim().split(",");
        birthMatrixFicheiro = getValores(terceiraLinha);

        double[][] leslieMatrix = fillMatrix(survivalMatrixFicheiro,birthMatrixFicheiro);
        printMatrix(leslieMatrix);

    }

    public static void printMatrix(double[][] matriz) {
        for (int i = 0; i < matriz.length; i++)//Cycles through rows
        {
            for (int j = 0; j < matriz[i].length; j++)//Cycles through columns
            {
                System.out.print(matriz[i][j] + " ");
            }
            System.out.println(); //Makes a new row
        }
    }


    public static double[][] fillMatrix(double[] survivalMatrix, double[] birthMatrix) {

        for (int i = 0; i < birthMatrix.length; i++) {
            matrizLeslieNaoInterativo[0][i] = birthMatrix[i];         // preenche a primeira linha
        }
        int count = 0;
        for (int i = 1; i < survivalMatrix.length + 1; i++) {
            for (int j = 0; j < birthMatrix.length; j++) {
                if (i == j + 1) {
                    matrizLeslieNaoInterativo[i][j] = survivalMatrix[count];
                    count++;
                } else {
                    matrizLeslieNaoInterativo[i][j] = 0;
                }
            }
        }
        return matrizLeslieNaoInterativo;
    }

}

我目前在 Java 中有此代码,用于对更大的项目进行一些测试。我正在尝试创建一些公共变量以在我的大型项目中使用,但在尝试在此处使用它们时一直出现错误。

每当我用其他公共变量作为参数创建一个公共矩阵时,我总是收到一个错误:

<块引用>

线程“main”中的异常 java.lang.ExceptionInInitializerError 引起:java.lang.NullPointerException:无法读取数组 长度因为“testing.survivalMatrixFicheiro”为空

有没有办法解决这个问题?我需要将该矩阵保留为更大项目中其他方法的公共变量。

0 个答案:

没有答案