从键盘读取期间出现 Java NullPointerException

标签 java nullpointerexception readline

我需要从键盘读取值到表格,我猜它超出了范围,但不知道如何修复它。

Exception in thread "main" java.lang.NullPointerException at B12.App.main(App.java:36)

这就是那行tab.matrix[ai][aj]=parser;

完整代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Matrix{
    public Matrix() {

    }
    int rozmiar;
    double matrix[][];
}

public class App {
    public static void main(String[] args){
        Matrix tab = new Matrix();
        int parser;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
        System.out.println("Podaj rozmiar macierzy: ");
            try {
                parser = Integer.parseInt(br.readLine());
                tab.rozmiar = parser;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            System.out.println("Uzupelnij wiersze macierzy: ");
                for(int ai=1; ai<=tab.rozmiar; ai++){
                    for(int aj=1; aj<=tab.rozmiar; aj++){
                        BufferedReader zm = new BufferedReader(new InputStreamReader(System.in) );
                            try {
                                parser = Integer.parseInt(zm.readLine());
                                tab.matrix[ai][aj]=parser;
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }               
                    }
                }
                drukuj(tab);
        }

        static void drukuj(Matrix m){
            int ai,aj;
            for(ai=1; ai>=m.rozmiar; ai++)
            {
                for(aj=1; aj>=m.rozmiar; aj++)
                {
                    if(ai==1){
                    System.out.println("[" + m.matrix[ai][aj]);
                    }
                    if(ai!=1 && ai==m.rozmiar){
                        System.out.println(" " + m.matrix[ai][aj] + " " );
                    }
                    else if(ai==m.rozmiar){
                    System.out.println(m.matrix[ai][aj] + "]" );
                    }
                }
            }
        }

    public double Det(Matrix m){
        double wynik = 0;

        if(m.rozmiar==1){
            wynik=m.matrix[1][1];
        }
        else if(m.rozmiar==2){
            wynik=(m.matrix[1][1]*m.matrix[2][2])-(m.matrix[1][2]*m.matrix[2][1]);
        }
        else{
            for(int n=1; n<m.rozmiar +1; n++){
                Matrix tmpM = new Matrix();
                tmpM.rozmiar=m.rozmiar - 1;
                int k=1,j;
                for(j=2; j<m.rozmiar; j++){
                    for(k=1; k<m.rozmiar; k++){
                        if(k>n) tmpM.matrix[j-1][k] = m.matrix[j][k];
                        else if(k<n) tmpM.matrix[j-1][k-1] = m.matrix[j][k];                    }
                }   
            wynik+=m.matrix[1][n]*Math.pow(-1, (j+k))*Det(tmpM);    
            }
        }

        return wynik;
    }
}

最佳答案

这是因为double matrix[][];没有初始化,它的null

关于从键盘读取期间出现 Java NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184103/

相关文章:

Java运行时错误: null pointer exception

java - 尝试将文本文件逐行加载到数组中,但数组保持为空,我做错了什么? (Java,安卓工作室)

ruby - Readline、输入记录分隔符和 Ruby

java - 如何从 Web 服务方法访问 WebContent 文件夹

java - Android异常处理最佳实践?

java - NullPointerException - Drawable.setBounds - 可能是由于 fragment 转换

java.lang.NullPointerException : Can't pass null for argument 'pathString' in child() - Error Occurs in MessagesDbRef

javascript - Node 流逐行关闭事件

java.net.Authenticator : java.net.ProtocolException:服务器重定向次数过多 (20)

java - Amazon S3 AWS 上传进度监听器