Hallo.
Ich hab mich mal hingesetzt und ein Programm versucht zu schreiben, welches mir eine Addition, Subtraktion bzw. Multiplikation von 2 Matrizen durchführt...
Leider tritt dabei folgender Fehler auf: ArrayIndexOutOfBoundsException: 1
Hier mein Quelltext:
Der Fehler tritt in Zeile: 65, 76 und 86 auf.
Ich bin noch blutiger Anfänger also bitte nicht schlagen
Gruß
Dominik
Ich hab mich mal hingesetzt und ein Programm versucht zu schreiben, welches mir eine Addition, Subtraktion bzw. Multiplikation von 2 Matrizen durchführt...
Leider tritt dabei folgender Fehler auf: ArrayIndexOutOfBoundsException: 1
Hier mein Quelltext:
Code:
/*
* Matrizen_Zusatz.java
* Dominik Remy
* Matrizenmultiplikation...usw...
* Created on 15. November 2006, 14:13
*/
import javax.swing.*;
public class Matrizen_Zusatz {
private static int[][] matrix_1; //1. Matrix
private static int[][] matrix_2; //2. Matrix
private static int[][] ergebnis; //Ergebnis nach Multiplikation
private static boolean gleichheit; //Variable um zu prüfen: Spalten1 = Zeilen2 ?
private static int rechenoperation; // Welche Rechenop ?
//Main Methode, zuerst werden 2 Matrizen eingelesen und dann verglichen,
//ist gleichheit = true dann gebe Matrizen aus, sonst erzeuge neue Matrix
//solange bis gleichheit = true...
public static void main(String[] args) {
rechenop();
einlesen1();
einlesen2();
pruefen();
do{
if (gleichheit == true){
ausgeben1();
ausgeben2();
switch (rechenoperation){
case 1: addieren();
case 2: subtrahieren();
case 3: multiplizieren();
default: System.out.println("Eingabe-Fehler !!!");
}
ausgeben3();
}
else{
einlesen2();
pruefen();
}
}while (gleichheit != true);
}
public static int rechenop(){
System.out.println("Zahl 1 = Addition");
System.out.println("Zahl 2 = Subtraktion");
System.out.println("Zahl 3 = Multiplikation");
String eingl;
eingl = JOptionPane.showInputDialog("Geben sie bitte ein welche " +
"Rechenoperation sie durchführen wollen !");
rechenoperation = Integer.parseInt(eingl);
return rechenoperation;
}
//Berechnet matrix_1 mal matrix_2 und gibt ergebnis zurück
public static int[][] multiplizieren(){
for (int i = 0; i <= matrix_1.length; i++){
for (int j = 0; j <= matrix_2[0].length; j++){
ergebnis[i][j] = 0;
for ( int k = 0; k<=matrix_1.length; k++){
ergebnis[i][j] = matrix_1[i][k] * matrix_2[k][j];
}
}
}
return ergebnis;
}
//Addition von den 2 Matrizen
public static int[][] addieren(){
for (int i = 0; i <= matrix_1.length; i++){
for (int j = 0; j <= matrix_2[0].length; j++){
ergebnis[i][j] = matrix_1[i][j] + matrix_2[i][j];
}
}
return ergebnis;
}
//Subtraktion von den 2 Matrizen
public static int[][] subtrahieren(){
for (int i = 0; i <= matrix_1.length; i++){
for (int j = 0; j <= matrix_2[0].length; j++){
ergebnis[i][j] = matrix_1[i][j] - matrix_2[i][j];
}
}
return ergebnis;
}
//Prüft ob Spalten von Matrix1 = Zeilen von Matrix2 ?
public static boolean pruefen(){
gleichheit = true;
if (matrix_1.length != matrix_2[0].length){
gleichheit = false;
}
else{}
return gleichheit;
}
//Erstellt die 1. Matrix
public static int[][] erstellen1(int n){
matrix_1 = new int [n][n];
return matrix_1;
}
//Erstellt die 2. Matrix
public static int[][] erstellen2(int n){
matrix_2 = new int [n][n];
return matrix_2;
}
//Erstellt Ergebnis-matrix von Dimension n
public static int[][] erstellen3(int n){
ergebnis = new int [n][n];
return ergebnis;
}
//Liest die 1. Matrix ein und gibt Matrix zurück
public static int[][] einlesen1(){
String eingl;
eingl = JOptionPane.showInputDialog("Geben sie die " +
"Dimension der 1. nxn-Matrix an ");
int n;
n = Integer.parseInt(eingl);
erstellen1(n);
for (int i = 0; i<n; i++){
for (int j = 0; j<n; j++){
eingl = JOptionPane.showInputDialog("Geben sie das " + i + j +
"-te Element an ! ");
int k = Integer.parseInt(eingl);
matrix_1[i][j]= k;
}
}
return matrix_1;
}
//Liest die 2. Matrix ein und gibt Matrix zurück
public static int[][] einlesen2(){
String eingl;
eingl = JOptionPane.showInputDialog("Geben sie die " +
"Dimension der 2. nxn-Matrix an ");
int n;
n = Integer.parseInt(eingl);
erstellen2(n);
erstellen3(n);
for (int i = 0; i<n; i++){
for (int j = 0; j<n; j++){
eingl = JOptionPane.showInputDialog("Geben sie das " + i + j +
"-te Element an ! ");
int k = Integer.parseInt(eingl);
matrix_2[i][j]= k;
}
}
return matrix_2;
}
//Gibt die 1. Matrix aus
public static void ausgeben1(){
for (int i = 0; i < matrix_1.length; i++) {
for (int j = 0; j < matrix_1[0].length; j++){
System.out.print(matrix_1[i][j] + " ");
System.out.println();
}
}
}
//Gibt die 2. Matrix aus
public static void ausgeben2(){
System.out.println("*");
for (int i = 0; i < matrix_2.length; i++) {
for (int j = 0; j < matrix_2[0].length; j++)
System.out.print(matrix_2[i][j] + " ");
System.out.println();
}
}
//Gibt die Ergebnismatrix aus
public static void ausgeben3(){
System.out.println("=");
for (int i = 0; i < ergebnis.length; i++) {
for (int j = 0; j < ergebnis[0].length; j++){
System.out.print(ergebnis[i][j] + " ");
System.out.println();
}
}
}
}
Der Fehler tritt in Zeile: 65, 76 und 86 auf.
Ich bin noch blutiger Anfänger also bitte nicht schlagen
Gruß
Dominik