# Mehrdimensionales Array



## chk1102 (13. Aug 2012)

Hallo Zusammen,

ich habe eine Aufgabe in Java zu lösen, die mit Lotto spielen zu tun hat.
Es sollen 1x die Lottozahlen + Zusatzzahl gezogen werden. Folglich soll es 2x Benutzern per Eingabe ermöglicht werden Zahlen zu tippen.
Zum Schluss sollen die getippten mit den gezogenen verglichen und jedem Spieler, der richtig getippt hat 1 Punkt geben werden

Ich habe dasselbe Programm, allerdings ohne Eingaben bereits geschrieben:

```
int lotto[] = new int[49];
		int ran;
		int ziehung[] = new int[7];
		int zs = 0;

		for (int i = 1; i < lotto.length; i++) {
			lotto[i] = 0;
		}

		for (int i = 0; i < ziehung.length; i++) {
			ran = (int) (Math.random() * 49 + 1);
			ziehung[i] = ran;
			for (int j = 0; j < i; j++) {
				if (ziehung[j] == ziehung[i]) {
					i--;
				}
				
			}
		}
	//	Arrays.sort(ziehung);
		System.out.println(Arrays.toString(ziehung));

		for (int i = 0; i<ziehung.length; i++) {
			if((i+1)<=6)
			lotto[ziehung[i] -1] = 1;
			else 
			lotto[ziehung[i] -1] = 2;
			if ( (i+1) >=6) 
				zs= ziehung[i];
		}
		System.out.println(Arrays.toString(lotto));
		System.out.println("Die ZS lautet: " + zs);
		for(int i = 0; i<ziehung.length; i++) {
			
		}
		System.out.println("Die Lottozahlen von Samstag: " + Arrays.toString(ziehung));
		
	}

}
```

Daher hatte ich mir gedacht schreibe ich den Code nur so um, dass ich 1. eine Benutzereingabe mache u alle Zahlen von Benutzern u die gezogenen in ein Array packe: lotto[2][7]
Übrigens habe ich nun [7] gewählt, weil ich das andere unnötig finde.

Allerdings geht mein Plan nicht auf.
Es beginnt wieder damit, dass ich das Array lotto [0]_ gar nicht gefüllt bekomme mit den Zufallszahlen.



		Java:In die Zwischenablage kopieren


int lotto[] []= new int[2][7];
		int ran;
		int zs = 0;
		int treffer = 0;


		for (int i = 0; i < lotto.length; i++) {
			ran = (int) (Math.random() * 49 + 1);
			for (int j = 0; j < lotto[i].length; j++) {
				lotto[0][j] = ran;
				
					
							System.out.println(lotto[i][j]);

			}
		}
	//	Arrays.sort(ziehung);
		System.out.println(Arrays.toString(lotto));

	/*	for (int i = 0; i<ziehung.length; i++) {
			if((i+1)<=6)
			lotto[ziehung[i] -1] = 1;
			else 
			lotto[ziehung[i] -1] = 2;
			if ( (i+1) >=6) 
				zs= ziehung[i];
		}*/
		System.out.println(Arrays.toString(lotto));
		System.out.println("Die ZS lautet: " + zs);
		for(int i = 0; i<lotto.length; i++) {
			
		}
		System.out.println("Die Lottozahlen von Samstag: " + Arrays.toString(lotto));
		
	}

}


Ausgabe ist dann:
23
23
23
23
23
23
23
0
0
0
0
0
0
0
[[I@86c347, [I@f7e6a96]
[[I@86c347, [I@f7e6a96]
Die ZS lautet: 0
Die Lottozahlen von Samstag: [[I@86c347, [I@f7e6a96]


Ich bin am verzweifeln...
Bitte helft mir_


----------



## SlaterB (13. Aug 2012)

mit

```
for (int i = 0; i < ziehung.length; i++) {
            ran = (int) (Math.random() * 49 + 1);
            ziehung[i] = ran;
            for (int j = 0; j < i; j++) {
                if (ziehung[j] == ziehung[i]) {
                    i--;
                }
                
            }
        }
```
hast du einen gewissen guten Code, der jede erstellte Zufallszahl maximal einmal zuweist, sogar auf Doppelte prüfe,
neu ist

```
for (int i = 0; i < lotto.length; i++) {
            ran = (int) (Math.random() * 49 + 1);
            for (int j = 0; j < lotto[i].length; j++) {
                lotto[0][j] = ran;
                
                    
                            System.out.println(lotto[i][j]);
 
            }
        }
```
welcher nur eine Zufallszahl gleich auf alle Felder schreibt

was soll man dazu sagen, außer dich möglichst zum ersten Code zurückzuempfehlen?
wenn man schon weiß, dass es nach links zum Ausgang geht und rechts ins Labyrinth, muss man dann noch den Weg nennen?

------

edit:
Arrays.toString() auf ein int[] liefert gute Ausgabe, auf ein int[][] weniger, brauchst du alle gleichzeitig ausgegeben?


----------



## chk1102 (13. Aug 2012)

Erst einmal vielen Dank.
Habe mir auch gedacht, dass der erste Code besser ist 

Allerdings muss ich für die Aufgabe ein mehrdimensionales Array verwenden.
Ich habe etliche Bücher zuhause und trotzdem krieg ich das nicht auf die Kette...
Helmut Balzert, Java: Der Einstieg in die Progr.
Oreilly: Java von Kopf bis Fuß
Karsten Samaschke: Java Einstieg für Anspruchsvolle
und dann noch vom Teubner-Verlag: Java als erste Progrsprache

Online gibts auch etliche Referenzen wie: Java ist auch eine Insel, aber auch dieses rall ich nicht.

Ich tue mich leider sehr schwer mit Java, bzw Programmieren allg. jedoch brauche ich es um meinen Bachelor in Wirtschaftsinformatik zu machen. Die anderen Module im Studium hab ich gut geschafft.. Ich bin nur so verzweifelt...
Alle Programmierer sagen immer, dass irgendwann der Schalter umgelegt wird und dann kann man´s.......

Ich weiß wie man ein Array initialisiert und mit Werten belegt für ein einfaches Array
Für ein mehrdimensionales weiß ich zwar auch wie man es initialisiert und das man immer 2 Schleifen benötigt.. und das wars dann auch schon.. In den Büchern finde ich nicht das was ich brauche..

Ich nehme jede erdenkliche Hilfe an :rtfm:


----------



## SlaterB (13. Aug 2012)

wenn du in deinem Programm nicht weitarbeiten willst, hilft oftmals vielleicht ein Themenwechsel,

schreibe ein Programm, welches die Zahlen 1-5 in ein Array schreibt und sie ausgibt,
bekommst du das hin?
evtl. gleich auch in einem zweidimensionalen versuchen, aber wichtig wäre das erste


----------



## chk1102 (13. Aug 2012)

Hallo,

vielen Dank für deine schnelle Antwort..
Musste mich erst mal wieder fangen , daher jetzt erst die Rückmeldung


```
int test [] = new int [5];
		
		for (int i = 0; i<test.length; i++) {
			test[i]= i+1;
		}
		System.out.println(Arrays.toString(test));
```

Ausgabe:
[1, 2, 3, 4, 5]

Hab das Array erst mit 4 ausgestattet, aber das zählte nur 1-4,.. 
Ich dachte ein Array mit 4 Platzhaltern kann 5 Werte ablegen: 0,1,2,3,4 <= index

Nun das mehrdimensionale Array.. Bin mir aber nicht sicher, ob das so richtig ist.


```
int test1 [][] = new int [1][2];
		for (int i = 0; i<test1.length; i++) {
			for(int j = 0; j<test1[i].length; j++) {
				test1[i][j] = i+j;
			System.out.println(test1[i][j]);

			}
			
		}
```


----------



## SlaterB (13. Aug 2012)

```
int test [] = new int [5];
		
		for (int i = 0; i<test.length; i++) {
			test[i]= i+1;
		}
		System.out.println(Arrays.toString(test));
```


```
int test [][] = new int[2][5];
		
		for (int i = 0; i<test[0].length; i++) {
			test[0][i]= i+1;
		}
		System.out.println(Arrays.toString(test[0]));
```
siehst du die Parallelen in diesen beiden Programmen? im Grunde derselbe Code,
statt der test-Variablen, ein int[] steht überall test[0], denn das ist auch ein int[], genau das gleiche, auch Arrays.toString() funktioniert,

deinen guten Code zum Zufallszahlen-Ziehen kannst du übernehmen, statt ziehung schreibe überall lotto[0],
dann hättest du auch einen Teil von lotto gut befüllt


----------



## chk1102 (14. Aug 2012)

Okay, verstanden.
Aber wozu brauche ich dann laut meiner Unterlagen immer zwei For-Schleifen für ein zwei oder mehrdimensionales Array?
Das is ja eigentlich so schön einfach wie du es notiert hast ohne das ganze schwieriger zu machen..

:toll:


----------



## SlaterB (14. Aug 2012)

> Aber wozu brauche ich dann laut meiner Unterlagen immer zwei For-Schleifen für ein zwei oder mehrdimensionales Array?

die Frage leitet sich direkt aus 'wozu brauch ich ein mehrdimensionales Array statt eines eindimensionalen?' ab,
wenn du weiterhin nur 7 Lottozahlen speichern willst, brauchst du den Rest nicht,
willst du dagegen mehrere Serien hinteinander befüllen bietet sich eine zweite Schleife drumherum an,
willst du einen Teil des Arrays so befüllen einen anderen später durch anderen Code, dann ist das wiederum keine zweite Schleife


----------



## chk1102 (14. Aug 2012)

Sicher ist das jez keine hightech-Lösung, aber ich es spiegelt die Aufgabe definitiv wieder :')


```
package Proggen1_2;

import java.util.Arrays;

public class Lottozahlen_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int ran;
		int zs = 0;
		int treffer1 = 0;
		int treffer2 = 0;
		int sp1, sp2;

		int lotto[][] = new int[3][7];
		for (int i = 0; i < lotto[0].length; i++) {
			lotto[0][i] = (int) (Math.random() * 49 + 1);
			zs = lotto[0][6];
		}
		System.out.println(Arrays.toString(lotto[0]));

		System.out.println("Die ZS lautet: " + zs);
		System.out.println("Die Lottozahlen von Samstag: "
				+ Arrays.toString(lotto[0]));

		System.out
				.println("Bitte gib als 1. Spieler 6 Lottozahlen und eine Zusatzzahl ein:");

		for (int i = 0; i < lotto[1].length; i++) {
			lotto[1][i] = EAM.rInt();
		}
		System.out.println("Spieler 1: " + Arrays.toString(lotto[1]));

		System.out
				.println("Bitte gib als 2. Spieler 6 Lottozahlen und eine Zusatzzahl ein:");

		for (int i = 0; i < lotto[2].length; i++) {
			lotto[2][i] = EAM.rInt();
		}
		System.out.println("Spieler 1: " + Arrays.toString(lotto[2]));
		
		for ( int i = 0; i<lotto[0].length; i++){
			if (lotto[0][i] == lotto[1][i]){
				treffer1 = i+1;
			}
			if(lotto[0][i] == lotto[2][i]) {
				treffer2 = i+1;
			}
		}
		System.out.println("Spieler 1 hat " + treffer1 +  " treffer");
		System.out.println("Spieler 1 hat " + treffer2 + " treffer");

	}

}
```

Ausgabe:
[21, 8, 36, 10, 23, 44, 48]
Die ZS lautet: 48
Die Lottozahlen von Samstag: [21, 8, 36, 10, 23, 44, 48]
Bitte gib als 1. Spieler 6 Lottozahlen und eine Zusatzzahl ein:
21 8 7 34 45 6 9
Spieler 1: [21, 8, 7, 34, 45, 6, 9]
Bitte gib als 2. Spieler 6 Lottozahlen und eine Zusatzzahl ein:
9 23 22 21 20 19 8
Spieler 1: [9, 23, 22, 21, 20, 19, 8]
Spieler 1 hat 2 treffer
Spieler 2 hat 1 treffer




> willst du dagegen mehrere Serien hinteinander befüllen bietet sich eine zweite Schleife drumherum an,
> willst du einen Teil des Arrays so befüllen einen anderen später durch anderen Code, dann ist das wiederum keine zweite Schleife



Wie funktioniert das dann mit der 2. Schleife? So wie ich es bisher geschrieben habe klappte es nicht.
Was auch noch bei den nächsten Aufgaben wichtig für mich ist, ist wie rechne ich mit den Werten?
Meine nächste Aufgabe ist eine Absatzstatistikaufgabe. Pro Quartal den Max-Umsatz bspweise oder Summe aller Regionen pro Quartel oder aufs Jahr gerechnet, die es abzuspeichern gilt 

Ich würde das Programm wieder so aufbauen wie jetzt.
Dann das Array sortieren und den ersten u letzten Index ausgeben.
U die Summe dann auch wieder so mit ner For-Schleife und in der Schleife summe= array[1]_ 
Bin ich damit auf dem richtigen Weg????:L_


----------



## SlaterB (14. Aug 2012)

> Wie funktioniert das dann mit der 2. Schleife? So wie ich es bisher geschrieben habe klappte es nicht.

in deinem zweiten Programm von 'Gestern, 22:19' klappt doch die zweite Schleife ganz gut,

wenn man einen Code hat der array[0]_ verwendet für mehrere i, dann könnte man eine j-Schleife drumherum legen und array[j] für verschiedenen j bearbeiten, die inneren i sowieso noch, der innere Code bleibt ja dabei


> Bin ich damit auf dem richtigen Weg?

in etwa sicher, zu grob für sinnvolle Bewertungen_


----------



## chk1102 (14. Aug 2012)

Hallo again

ich habe mich an das Absatzprogramm gemacht und stoße leider auf die Schwierigkeit, dass Werte aus verschiedenen Index eines Array zusammenzurechnen.


```
package Proggen1_2;

import java.util.Arrays;

public class Absatzstatistik {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int gesamtabsatz = 0;
		int q1 = 0;
		int q2 = 0;
		int q3 = 0;
		int q4 = 0;
		int min = 0;
		int max = 0;

		int absatz [][] = new int [3][4];
		System.out.println("Bitte für das MacBook Pro Retina 17 Zoll Regionen und Umsatzdaten eingeben: ");
		
		for(int i = 0; i<absatz[0].length; i++) {
			System.out.println("Die Umsatzzahlen für die 1. Region des " + (i+1)+ " Quartals bitte:");
			absatz[0][i] = EAM.rInt();
		}
		System.out.println(Arrays.toString(absatz[0]));
		
		for(int i = 0; i<absatz[1].length; i++) {
			System.out.println("Die Umsatzzahlen für die 2. Region des " + (i+1)+ " Quartals bitte:");
			absatz[1][i] = EAM.rInt();
		}
		for(int i = 0; i<absatz[2].length; i++) {
			System.out.println("Die Umsatzzahlen für die 3. Region des " + (i+1)+ " Quartals bitte:");
			absatz[2][i] = EAM.rInt();
		}
	
		//Gesamtabsatz pro Region und Quartal
		for( int i = 0; i<absatz[0].length; i++) {
			gesamtabsatz = absatz[2][i] + gesamtabsatz;
		}
		System.out.println("Gesamtabsatz: " + gesamtabsatz);
		
		//Gesamtabsatz je Quartal
		for( int i = 0; i<absatz[0].length; i++) {
			System.out.println("Gesamtabsatz pro " + (i+1)+ " Quartal: " + (absatz[2][i]));
		}
		//je Region das Quartal mit min u max an Umsatz
		for( int i = 0; i<absatz[0].length; i++) {
			for ( int j = 0; j<i; j++){
				if ( absatz[2][j] >= absatz[2][j]) {
					min = absatz[2][i];
				}
				if ( absatz[2][j] <= absatz[2][j]) {
					max = absatz[2][i];
				}
			}
			System.out.println("Region " + (i+1) + "hat für das " + (i+1) + ". Quartal den Höchstumsatz von :" + max + " geringster Umsatz von: " + min + " gemacht.");

		}
		
	}

}
```


Meine Ausgabe betrachtet zur Zeit nur den letzten Index..
U da is meine Schwierigkeit..
2 For-Schleifen oder?


Bitte für das MacBook Pro Retina 17 Zoll Regionen und Umsatzdaten eingeben: 
Die Umsatzzahlen für die 1. Region des 1 Quartals bitte:
234
Die Umsatzzahlen für die 1. Region des 2 Quartals bitte:
345
Die Umsatzzahlen für die 1. Region des 3 Quartals bitte:
56
Die Umsatzzahlen für die 1. Region des 4 Quartals bitte:
3
[234, 345, 56, 3]
Die Umsatzzahlen für die 2. Region des 1 Quartals bitte:
2
Die Umsatzzahlen für die 2. Region des 2 Quartals bitte:
35456
Die Umsatzzahlen für die 2. Region des 3 Quartals bitte:
653
Die Umsatzzahlen für die 2. Region des 4 Quartals bitte:
22
Die Umsatzzahlen für die 3. Region des 1 Quartals bitte:

556
Die Umsatzzahlen für die 3. Region des 2 Quartals bitte:
54
Die Umsatzzahlen für die 3. Region des 3 Quartals bitte:
2
Die Umsatzzahlen für die 3. Region des 4 Quartals bitte:
45
Gesamtabsatz: 657
Gesamtabsatz pro 1 Quartal: 556
Gesamtabsatz pro 2 Quartal: 54
Gesamtabsatz pro 3 Quartal: 2
Gesamtabsatz pro 4 Quartal: 45
Region 1hat für das 1. Quartal den Höchstumsatz von :0 geringster Umsatz von: 0 gemacht.
Region 2hat für das 2. Quartal den Höchstumsatz von :54 geringster Umsatz von: 54 gemacht.
Region 3hat für das 3. Quartal den Höchstumsatz von :2 geringster Umsatz von: 2 gemacht.
Region 4hat für das 4. Quartal den Höchstumsatz von :45 geringster Umsatz von: 45 gemacht.


----------



## chk1102 (14. Aug 2012)

Jetzt habe ich folgenden Code geändert und bekomme ein ArrayIndexOutOfBoundException


```
//Gesamtabsatz pro Region und Quartal
		for( int i = 0; i<absatz[0].length; i++) {
			for ( int j = 0; j<i; j++){ 
				gesamtabsatz = absatz[i][j] + gesamtabsatz;
			}
```

???:L


----------



## SlaterB (14. Aug 2012)

das Array hat die Längen 3 und 4, es gibt 3 eindimensionale Arrays der Länge 4, i lässt du bis zur inneren Grenze laufen, also 0, 1, 2, 3, insgesamt 4 Indexe, willst damit aber eines der drei äußeren Arrays holen, das geht doch offensichtlich nicht


----------



## chk1102 (15. Aug 2012)

Ich verstehe leider nicht 
Ich dachte die For Schleifen durchlaufen mit _[j] das gesamte Array... tuts nicht?_


----------



## Robokopp (15. Aug 2012)

Stell dir einfach mal dieses mehrdimensionale Array als Raster, Excel-Tabelle etc vor.
Es gibt Reihen und Spalten.Reihen gehen von Links nach Rechts und Spalten von oben nach unten.

mit dem Array[3][4] legst du ein Array an, welches 4 Reihen und 5 Spalten hat.(Ab dem Index 0 wird gezählt)

wollen wir es befüllen, könnte der Code so aussehen:


```
for(int i=0;i<=3;i++){
	//Hier wird immer eine Reihe weiter gesprungen, sobald die aktuelle Reihe durch die innere For-Schleifen abgearbeitet wurde!
	for(int j=0;j<=4;j++){

		//Hier wird jede Spalte in der aktuellen Reihe durchgegangen
		int deinarray[i][j]=IrgendeinWert;

	}

}
}
```


So sähe die Befüllung in Einzelschritten aus:

 1   2   3   4  5

 6   7   8   9 10

11 12 13 14 15

16 17 18 19 20


Gehst du jetzt noch zu schritt 21, also eine Spalte oder Reihe mehr, dann kriegst du eine ArrayIndexOutOfBoundsException weil die Stelle in deinem angelegten Array nicht existiert.

Ich hoffe das war einigermaßen verständlich


----------



## chk1102 (15. Aug 2012)

Merci, dieser Überblick is top!


```
package Proggen1_2;

import java.util.Arrays;

public class Absatzstatistik {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int gesamtabsatz = 0;
		int q1 = 0;
		int q2 = 0;
		int q3 = 0;
		int q4 = 0;
		int min = 0;
		int max = 0;

		int absatz [][] = new int [2][3];
		System.out.println("Bitte für das MacBook Pro Retina 17 Zoll Regionen und Umsatzdaten eingeben: ");
		
		for(int i = 0; i<absatz[0].length; i++) {
			System.out.println("Die Umsatzzahlen für die 1. Region des " + (i+1)+ " Quartals bitte:");
			absatz[0][i] = EAM.rInt();
		}
		System.out.println(Arrays.toString(absatz[0]));
		
		for(int i = 0; i<absatz[1].length; i++) {
			System.out.println("Die Umsatzzahlen für die 2. Region des " + (i+1)+ " Quartals bitte:");
			absatz[1][i] = EAM.rInt();
		}
		[B][COLOR="Red"]for(int i = 0; i<absatz[2].length; i++) {
			System.out.println("Die Umsatzzahlen für die 3. Region des " + (i+1)+ " Quartals bitte:");
			absatz[2][i] = EAM.rInt();
		}[/COLOR][/B]
	
		//Gesamtabsatz pro Region und Quartal
		for( int i = 0; i<absatz[0].length; i++) {
			for ( int j = 0; j<i; j++){ 
				gesamtabsatz = absatz[i][j] + gesamtabsatz;
			}
			
		}
		System.out.println("Gesamtabsatz: " + gesamtabsatz);
		
		//Gesamtabsatz je Quartal
		for( int i = 0; i<absatz[0].length; i++) {
			System.out.println("Gesamtabsatz pro " + (i+1)+ " Quartal: " + (absatz[2][i]));
		}
		//je Region das Quartal mit min u max an Umsatz
		for( int i = 0; i<absatz[0].length; i++) {
			for ( int j = 0; j<i; j++){
				if ( absatz[2][j] >= absatz[2][j]) {
					min = absatz[2][i];
				}
				if ( absatz[2][j] <= absatz[2][j]) {
					max = absatz[2][i];
				}
			}
			System.out.println("Region " + (i+1) + "hat für das " + (i+1) + ". Quartal den Höchstumsatz von :" + max + " geringster Umsatz von: " + min + " gemacht.");

		}
		
	}

}
```

Wenn das Array von Index null ich beginnt, ich für die Aufgabe 12 Werte eintragen soll (3 Regionen und 4x Umsatzzahlen je Quartal), dann müsste mein Array mit absatz [2][3] richtig sein.. Oder?
0,1,2 = 3 Zeilen x 4 Spalten 0,1,2,3
Genau bei dem fett markierten teil kommt nen ArrayException..
Das Prog mag die for-Schleife inkl. Inhalt nicht.:autsch:


----------



## SlaterB (15. Aug 2012)

was spricht gegen JAVA-Tags statt CODE-Tags? du machst das Lesen unnötig schwer

> Oder?

was spricht gegen Ausprobieren?


```
public class Test {
    public static void main(String[] args)  {
        int[] k = new int[2];
        System.out.println(k[0]); // geht fraglos
        System.out.println(k[1]); // geht fraglos
        System.out.println(k[2]); // geht das oder nicht nicht?, vermuten und verifizieren
    }
}
```
lerne erst, was die Länge eines Arrays bedeutet, welcher Index welcher ist, dann kann es losgehen

die vorherigen Programme, etwa das 7er-Array zu Beginn, verraten das System freilich auch,
Index 2 gibt es in einem 2er-Array nicht, das ist nun eine Grundlage ohne die man nicht arbeiten kann


----------



## chk1102 (16. Aug 2012)

Sooo,

habe mir das mit dem Array noch mal angeschaut. Antwort auf deinen Tipp: Weil das Array mit Index 0 beginnt und das Array length-1 gerechnet, geschrieben wird.

Ich habe mich nun weiter damit beschäftigt, habe noch Probleme alles auszurechnen. Im code selbst habe ich Kommentare hinterlegt.

Was ich auch noch nicht verstanden habe ist, wann eine For-Schleife so oder so benutzt wird:
for (int i = 0; i<array.length; i++)  <- ist ja immer gleich
for ( int j = 0; j<i; j++ ) oder
for ( int j = 0; j<arrays[i oder eine zahl].length; j++)

Habe es mit System.outs probiert, aber verstanden habe ich es noch nicht.


```
package Proggen1_2;

import java.util.Arrays;

public class Absatzstatistik {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int gesamtabsatz = 0;
		int g1 = 0;
		int g2 = 0;
		int g3 = 0;
		int g4 = 0;
		int min = 0;
		int max = 0;
		int ab1[] = new int [4];


		int absatz [][] = new int [3][4];
		System.out.println("Bitte für das MacBook Pro Retina 17 Zoll Regionen und Umsatzdaten eingeben: ");
		
		//Wertezuweisung durch Benutzereingabe
		for(int i = 0; i<absatz[0].length; i++) {
			System.out.println("Die Umsatzzahlen für die 1. Region des " + (i+1)+ " Quartals bitte:");
			absatz[0][i] = EAM.rInt();
			ab1[i] = absatz[0][i];
		}
		System.out.println(Arrays.toString(absatz[0]));

		//Wertezuweisung durch Benutzereingabe
		for(int i = 0; i<absatz[1].length; i++) {
			System.out.println("Die Umsatzzahlen für die 2. Region des " + (i+1)+ " Quartals bitte:");
			absatz[1][i] = EAM.rInt();
		}
		System.out.println(Arrays.toString(absatz[1]));
		
		//Wertezuweisung durch Benutzereingabe
		for(int i = 0; i<absatz[2].length; i++) {
			System.out.println("Die Umsatzzahlen für die 3. Region des " + (i+1)+ " Quartals bitte:");
			absatz[2][i] = EAM.rInt();
		}
		System.out.println(Arrays.toString(absatz[2]));

		//Gesamtabsatz für alle Regionen und alle Quartal
		for( int i = 0; i<absatz.length; i++) {
			for ( int j = 0; j<absatz[i].length; j++){ 
				gesamtabsatz += absatz[i][j]; 
			}
		}
		System.out.println("Gesamtabsatz fürs Jahr: " + gesamtabsatz);
		
		//Gesamtabsatz je Quartal
		//in dieser Rechnung ist was faul,..rechnet nicht immer die korrekte Summe aus
		for( int i = 0; i<absatz.length; i++) {
			for( int j = 0; j<i; j++) {
				g1 += absatz[j][0];
				g2 += absatz[j][1];
				g3 += absatz[j][2];				
				g4 += absatz[j][3];				

			}
		}
		System.out.println("Gesamtumsatz für 1. Quartal aller Regionen: " + g1);
		System.out.println("Gesamtumsatz für 2. Quartal aller Regionen: " + g2);
		System.out.println("Gesamtumsatz für 3. Quartal aller Regionen: " + g3);
		System.out.println("Gesamtumsatz für 4. Quartal aller Regionen: " + g4);

		
		//je Region das Quartal mit min u max an Umsatz
		//funktioniert iwie nicht, max = 0 und min irgendeine Zahl
		for( int i = 0; i<absatz.length; i++) {
				if ( absatz[0][i] >= ab1[i]) {
					min = absatz[0][i];
				}else if ( absatz[0][i] <=  ab1[i]) {
					max = absatz[0][i];
				}
		System.out.println("1. Region  hat für das  1. Quartal den Höchstumsatz von :" + max + " geringster Umsatz von: " + min + " gemacht.");
		
		}
		
	}

}
```


----------



## chk1102 (18. Aug 2012)

Probiert.. Läuft!
Danke für eure Geduld


----------

