Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab hier folgendes zusammengestellt. Es handelt sich um 2 Unterprogramme eines größeren Ganzen.
Java:
public static int[][] createMatrix(){
Out.println("Bitte Zeile eingeben:");
int a=In.readInt();
Out.println("Bitte Spalte eingeben:");
int b=In.readInt();
int[][] c= new int [a][b];
initMatrix(c);
return c;
}
public static int[][] initMatrix(int[][] matrix){
for (int i=0;i<matrix.length;i++){
for (int j=0;j<matrix[0].length;j++){
Out.print(matrix[i][j]+" ");
}
Out.println();
}
return matrix;
}
Ich hab also in der ersten Methode die Zeilen und Spalten der Matrix von Benutzer eingeben lassen und will jetzt in der zweiten Methode die Matrix mit den Zahlen von 1-M (wobei M=(Zeilen*Spalten)) befüllen (Jeweils durch Tab getrennt).
Ich hätte gedacht sowas wie: Out.println(matrix[j]+i*matrix[0]length+1+j)
Dann sieht es wohl nach dem richtigen aus, is aber nur Index-Spielerei, wie mir klar geworden ist und somit falsch.
Meine Frage daher: Was muss ich in die Out.println(matrix[j].........)-Zeile schreiben, damit die Matrix auch tatsächlich befüllt wird?
in diesem Zusammenhand hab ich jetzt dennoch leider noch ein Problem entdeckt...
Ich hab eine Methode gemacht, bei der die Diagonalsumme der Matrix ausgerechnet werden soll. In dieser Methode befindet sich eine weitere Methode die erstmal herausfindet, ob es sich überhaupt um eine N*N-Matrix handelt.
Alles funktioniert bestens, wenn es sich um eine N*N-Matrix handelt. Nur wenn es keine ist, bekomm ich nen Fehler raus...
Java:
public static void main(String[] args) {
int[] diagSumme=new int [2];
int[][] matrix;
matrix=createMatrix();
diagSumme=diagSum (matrix);
Out.println("Diagonalsumme 1 = "+diagSumme[0]);
Out.println("Diagonalsumme 2 = "+diagSumme[1]);
}
public static int[][] createMatrix(){
Out.println("Bitte Zeile eingeben:");
int a=In.readInt();
Out.println("Bitte Spalte eingeben:");
int b=In.readInt();
int[][] c= new int [a][b];
initMatrix(c);
return c;
}
public static int[][] initMatrix(int[][] matrix){
int index=1;
for (int i=0;i<matrix.length;i++){
for (int j=0;j<matrix[0].length;j++){
matrix[i][j]=index++;
Out.print(matrix[i][j]+"\t");
}
Out.println();
}
return matrix;
}
public static int[] diagSum(int[][] matrix){
if (checkDimensions(matrix)==true) {
int[] diagSum = new int [2];
for(int i=0;i<matrix.length;i++){
diagSum[0]+=matrix[i][i];
diagSum[1]+=matrix[i][matrix.length-i-1];
}
return diagSum;
}
else return null;
}
static boolean checkDimensions(int[][] matrix){
if (matrix.length==matrix[0].length) return true;
else return false;
}
Muss in Zeile 46: "else return null" etwas anderes stehen?
naja, denke das ist ganz ok, aber dir wird halt dann null zurückgeliefert, was dann zu einer nullpointerexception führt.(man könnte sich überlegne ob die methode anstatt null zurückzuliefern eine exception wirft)
aber sonst, könntest auch in deiner main einfach sowas schreiben: