我需要从键盘读取值到表格,我猜它超出了范围,但不知道如何修复它。
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/