# 2 mehrdimensionale Matrix einlesen



## Dendemeier (23. Apr 2012)

Hallo
Ich möchte in Eclipse programmieren, dass man mittels Bildschirmeingabe eine Matrix mit double Werten einlesen kann und das Programm dann die Norm dieser Matrix berechnet. Dabei soll der Benutzer zuerst die Anzahl Zeilen und Spalten der Matrix festlegen und danach die einzelnen Werte. Am Schluss soll die Norm am Bildschirm ausgegeben werden. 

Mein Vorschlag: (Problem liegt beim Einlesen der Matrix. Was habe ich das falsch gemacht?)


```
import java.util.Scanner;

public class Norm {

	public static void main(String[] args) {
		// Euklidische Norm eines Vektors

		Scanner eingabe = new Scanner(System.in);

		int anz_zeilen, anz_spalten;
		
		System.out.println("Anzahl Zeilen: ");
		anz_zeilen = eingabe.nextInt();
		System.out.println("Anzahl Spalten: ");
		anz_spalten = eingabe.nextInt();
		
		
		
		double [] [] a = new double [anz_zeilen] [anz_spalten];
		int x, y;
		for(int i=0; i<anz_zeilen+1; i++) {
			for(int j=0; j<anz_spalten+1; j++){
			System.out.println("Geben Sie Eintrag "+i+" ein:");
			x = eingabe.nextInt();
			System.out.println("Geben Sie Eintrag "+j+" ein:");
			y = eingabe.nextInt();
			a[x][y] = eingabe.nextDouble();
			}
		}
		
		double sum_of_squares=0;
		for(int i=0; i<anz_zeilen; i++) {
			for(int j=0; j<anz_spalten; j++){
			sum_of_squares += a[i][j] * a[i][j];
			}
		}
		
		for(int i=0; i<anz_zeilen; i++){
		for(int j=0; j<anz_spalten; j++){
		double norm=Math.sqrt(sum_of_squares);
		System.out.println("Euklidsche Norm des Vektors ist "+ norm);
		}
		}
		
	}

}
```


----------



## Volvagia (23. Apr 2012)

Hab nur ne kurzen Blick drauf geworfen, da ist mir das ins Aug gestochen: "i<anz_zeilen+1".
Sieht schwer nach ArrayIndexOutOfBounds aus.


----------



## pl4gu33 (23. Apr 2012)

erstmal die ArrayIndexOutOfBounds- Exception(im Bsp. unten schon gelöst) und kann es sein, dass du das vll. eher so gemeint hast?


```
double [] [] a = new double [anz_zeilen] [anz_spalten];
      
        for(int i=0; i<anz_zeilen; i++) {
            for(int j=0; j<anz_spalten; j++){ 
            	System.out.println("Eingabe für Position "+i+ " " +j);
            	a[i][j] = eingabe.nextDouble();
            }
        }
```

so werden alle Position des Arrays nacheinander abgefragt, was dort stehen soll.

und das hier:

```
for(int i=0; i<anz_zeilen; i++){
        	for(int j=0; j<anz_spalten; j++){
        		double norm=Math.sqrt(sum_of_squares);
        		System.out.println("Euklidsche Norm des Vektors ist "+ norm);
        	}
        }
```

bewirkt auch nicht viel,... da steht dann immer das Gleiche drin kannst auch gleich nur:


```
double norm=Math.sqrt(sum_of_squares);
System.out.println("Euklidsche Norm des Vektors ist "+ norm);
```

machen


----------

