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