Hi,
ich habe ein Problem bei der Ausgabe meiner berechneten Matrix bei der Skalaren Multiplikation.
Ich bekomme immer eine NullPointerException.
Zum Programm: Ich habe zwei class Dateien eine Mat und eine MatAnw
in der klasse Mat findet die berechnung sowie die ausgabe statt. In MatAnw findet die Eingabe der Matrix und auswahl was mit ihr geschehen soll, statt.
zum Quellcode von Mat:
c ist die NEUE Matrix diese soll Ausgegeben werden in void matAus
in Zeile 48 findet die Berechnung statt und in Zeile 16 soll die ausgabe stattfinden.
zum Quellcode von MatAnw:
in Zeile 24 bekomme ich die Fehlermeldung meiner Exception
ich habe ein Problem bei der Ausgabe meiner berechneten Matrix bei der Skalaren Multiplikation.
Ich bekomme immer eine NullPointerException.
Zum Programm: Ich habe zwei class Dateien eine Mat und eine MatAnw
in der klasse Mat findet die berechnung sowie die ausgabe statt. In MatAnw findet die Eingabe der Matrix und auswahl was mit ihr geschehen soll, statt.
zum Quellcode von Mat:
c ist die NEUE Matrix diese soll Ausgegeben werden in void matAus
in Zeile 48 findet die Berechnung statt und in Zeile 16 soll die ausgabe stattfinden.
Java:
class Mat{
int n; // Zeilenzahl
int m; // Spaltenzahl
double k[][]; // Feld für die Koeffizienten der Matrix
int ctr; // Kontrollfeld, ob die Matrix richtig gefüllt ist
Mat c;
Mat(){}
Mat(int n,int m,double k[][]){
this.n=n;
this.m=m;
this.k=k;
}
//Matrizenausgabe
void matAus(){
int i,j;
for(i=0;i<c.k.length;i++) {
for(j=0;j<c.k[i].length;j++) {
System.out.print(c.k[i][j]+" ");
}
System.out.println();
}
}
//Matrizenaddition
Mat matAdd(Mat b){
int i,j;
if(n==b.n && m==b.m){
Mat c=new Mat();
c.n=n;
c.m=m;
c.k=new double[n][m];
for(i=0;i<n;i++){
for(j=0;j<m;j++){
c.k[i][j]=k[i][j]+b.k[i][j];
}
}
}
else{
System.out.println("Matrizen ungleich!");
ctr=-1;
}
return c;
}
//Skalarmultiplikation
Mat matSkm(double w){
int i,j;
Mat c=new Mat();
c.n=n;
c.m=m;
c.k=new double[n][m];
for(i=0;i<n;i++){
for(j=0;j<m;j++){
c.k[i][j]=k[i][j]*w;
}
}
return c;
}
//Matrizenmultiplikation
Mat matMul(Mat b){
int i,j,o;
if(m==b.n){
Mat c=new Mat();
c.m=b.m;
c.n=n;
c.k=new double[n][m];
c.k[0][0]=0;
for(i=0;i<n;i++){
for(j=0;j<b.m;j++){
for(o=0;o<c.n;o++){
c.k[i][j]=c.k[i][j]+k[i][o]*b.k[o][j];
}
}
}
}
else{
ctr=-2;
}
return c;
}
//Transponierte Matrix
Mat matTransp(){
int i,j;
Mat c=new Mat();
c.n=n;
c.m=m;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
c.k[j][i]=k[i][j];
}
}
return c;
}
zum Quellcode von MatAnw:
in Zeile 24 bekomme ich die Fehlermeldung meiner Exception
Java:
import java.io.*;
class MatAnw{
public static void main(String args[])throws IOException{
int ma,i,j;
System.out.println("MATRIZEN RECHNUNG");
System.out.println("\nEingabe der Matrix:\n");
Mat a=matEin();
ma=menue();
Mat b=new Mat();
Mat c=new Mat();
switch(ma){
case 1:
System.out.println("\nBitte geben sie die zu addierende Matrix ein:\n");
b=matEin();
c=c.matAdd(b);
break;
case 2:
System.out.println("\nBitte geben Sie einen Skalar ein:");
double w=IO1.eindouble();
System.out.println();
c=c.matSkm(w);
c.matAus();
break;
}
}
//Menüauswahl
static int menue(){
int ma; // Menuepunkt
System.out.println("Bitte waehlen Sie einen Menuepunkt aus:\n\n (1) Addition zweier Matrizen\n (2) Skalare Multiplikation\n (3) Multiplikation zweier Matrizen\n (4) Transponierte Matrix berechnen\n");
ma=IO1.einint();
return ma;
}
//Matrix einlesen
static Mat matEin(){
Mat a=new Mat();
int n;
do{
System.out.println("Bitte geben Sie die Zeilenanzahl an:");
n=IO1.einint();
System.out.println();
if(n<=0){
System.out.println("Bitte Zahl größer Null eingeben!");
}
}while(n<=0);
int m;
do{
System.out.println("Bitte geben Sie die Spaltenanzahl an:");
m=IO1.einint();
System.out.println();
if(m<=0){
System.out.println("Bitte Zahl größer Null eingeben!");
}
}while(m<=0);
int i,j;
double k[][]=new double[n][m];
for(i=0;i<n;i++){
for(j=0;j<m;j++){
System.out.println("Bitte "+(i+1)+". Zeilen- und "+(j+1)+". Spaltenkomponente eingeben!");
k[i][j]=IO1.eindouble();
System.out.println();
}
}
a.ctr=1;
a.n=n;
a.m=m;
a.k=k;
return a;
}
}
Zuletzt bearbeitet: