• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Fragen zu mehrdimensionalen Arrays in Java

Registriert
19.01.07
Beiträge
116
1. Frage: Kann ein mehrdimensionaler Array aus unterschiedlichen Variablentypen
bestehen? Bei einer Tabelle: können die 'äußeren' Zeilenfelder
z.B. als String- , die 'inneren' Spaltenfelder als Integervariablen deklariert
werden. Oder bleibt nichts anderes übrig als einen Variablentyp
zu wählen und später die 'inneren' Felder als Integervariablen zu
konvertieren?
2. Frage: Wie kann ich Werte in einen mehrdimensionalen Array mit einer
verschachtelten Schleife einlesen? Ich hab´s erfolglos auf folgende Weise
versucht:
Code:
package verschachtelte_schleifen;
import java.util.Scanner;
public class verschachtelte_schleifen_1 {
public static void main (String[] args) {
	
	// Deklarieren der Variablen
	
String[][] zeiten = new String[7][3];
Scanner sc = new Scanner(System.in);
String eingabe;
int j=0;

	// Verschachtelte Schleife zum Einlesen der Arrays
	
for (int i=0; i<7; i++) {
	System.out.println("Geben Sie den " + (i+1) +". Namen ein: ");
	eingabe = sc.next();
	eingabe = zeiten[i][j];
	for (j=0; j<3; j++) {
		System.out.println("Geben Sie die " + (j+1) + ". Zeit ein: ");
		eingabe = sc.next();
		eingabe = zeiten[i][j];
	
	}
}
	
}
}

Beim 2. Durchlauf der 'äußeren' Schleife kommt folgende Fehlermeldung:

Geben Sie den 2. Namen ein:
Aaron

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at verschachtelte_schleifen.verschachtelte_schleifen_1.main(verschachtelte_schleifen_1.java:18)

Vielleicht kann mir jemand von Euch weiterhelfen!
Vielen Dank schon mal!!!
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Mehrdimensionale Arrays in Java sind meines Wissens immer Arrays of Arrays. Heißt: Nur der letzte hat Daten Deiner Wahl zum Inhalt. Alle Dimensionen vorher enthalten Arrays.
 

MACRASSI

Gelbe Schleswiger Reinette
Registriert
21.11.04
Beiträge
1.754
1. Soweit ich weiß kann man ein array immer nur von einem Typen machen.

2.)
Code:
String [][] array = new String [5][5];
    
    for(int i=0; i < sitzplatz.length; i++){
     for(int j=0; j < sitzplatz[i].length; j++){
       
       array[i][j]="test";
     }
   }

Gruß Rasmus
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Anstelle von
eingabe = sc.next();
eingabe = zeiten[j];
solltest Du mal
eingabe = sc.next();
zeiten[j] = eingabe;
probieren oder einfach
zeiten[j] = sc.next();
 
Registriert
19.01.07
Beiträge
116
Hab den Code an den entsprechenden Stellen geändert: es kommt noch immer die selbe Fehlermedung!
 

amarok

Galloway Pepping
Registriert
24.12.04
Beiträge
1.362
mh ich bin kein java phreak, aber soweit ich weiß können mehrdimensionale arrays dort nur einen datentyp beinhalten.
 
Registriert
19.01.07
Beiträge
116
Danke! Ein grundlegendes Missverständis bezüglich mehrdimensionaler Arrays ist mir durch Dein Beispiel soeben klargeworden!
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Probier es mal so:

Code:
import java.util.Scanner;

public class schleife {
	public static void main(String[] args) {

		// Deklarieren der Variablen

		String[][] zeiten = new String[7][3];
		Scanner sc = new Scanner(System.in);

		// Verschachtelte Schleife zum Einlesen der Arrays

		for (int i = 0; i < 7; i++) {
			for (j = 0; j < 3; j++) {
				System.out.println("Geben Sie String " + "(" + i + "," + j
						+ ")" + " ein: ");
				zeiten[i][j] = sc.next();
			}
		}

	}
}
 
Registriert
19.01.07
Beiträge
116
Mehrdimensionaler Arrays tabellennförmig ausgeben

Das Einlesen des Arrays hab ich jetzt hinbekommen. Meine Absicht war, dass jedem Namen verschiedene Werte zugewiesen werden sollen.
Daraufhin sollte dieser mehrdimensionale Array als Tabelle ausgegeben werden:

Code:
package beginn1;
import java.util.Scanner;
public class Beispiel1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// Deklaration der Variablen
		
		String [] name = new String [3];
		int [][] werte = new int[3][4];
		Scanner sc = new Scanner(System.in);
		
		// Einlesen der Namen
		
		for (int i=0;i<3;i++){
			System.out.println("Geben Sie den " + (i+1) +". Namen ein: ");
			name[i] = sc.next();
		}
		
		for (int i=0;i<3;i++){
			System.out.println(name[i]);
		}
		// Einlesen der Werte
		
		for (int i=0;i<3;i++){
			System.out.println("Geben Sie die Werte von " + name[i] + " ein:");
			for (int j=0;j<4;j++){
				System.out.println("Wert " + (j+1) + " eingeben");
				werte[i][j]=sc.nextInt();
			}
		}
		
		// Ausgabe der Werte
		
		for (int i=0;i<3;i++){
			System.out.println(name[i]);
			for (int j=0;j<4;j++){
				System.out.println(werte[i][j]);
			}
		}
		
	}

}
Die Ausgabe hat allerdings einen ganz wesentlichen Schöheitsfehler: sie erfolgt natürlich nicht tabellenförmig, sondern untereinander - etwa so:
Aaron
22
43
54
62
Thomas
33
55
.....
Wisst Ihr welche Formatierungsmöglichkeiten es gibt, um Tabellen auszugeben?
 
Registriert
19.01.07
Beiträge
116
Ist leider nicht ganz dasselbe: die String-Formatierung ist zwar wichtig um eine Spaltenbreite anzugeben, aber mit einer Tabellenförmigen Ausgabe, wie ich sie mir vorstelle hat das nix zu tun. Statt:
Tom 21
Tom 23
Tom 24
Tom 31
Eva 30
Eva 32
Eva 29
Eva 23
Otto 21
Otto 23
Otto 43
Otto 54
würde ich:
Tom 21 23 24 31
Eva 30 32 29 32
Otto 21 23 43 54
vorziehen!
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Dann mußt Du die Schleifen passend schreiben.
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Du kannst natürlich einen Object-Array verwenden und dann Strings und Integer (Achtung, das ist die _Klasse_ java.lang.Integer, nicht 'int' !) reinstecken, wie Du willst - aaaaber: Typsicherheit Adee, das musst Du selbst sicherstellen!

Gruß,

.commander
 

ulukaii

Idared
Registriert
22.02.07
Beiträge
28
Wenn Du gerne eine Ausgabe in Tabellenform möchtest, dann lege ich dir dieses Tutorial ans Herz. http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

Okay. Es mag vielleicht etwas zu umfangreich sein, dafür kannst Du das selbe Modell für eine Darstellung auf der Konsole und auch in einer GUI darstellen (Hier hilft wieder die schon erwähnte System.out.printf() Methode.

Good Luck!
 
Registriert
19.01.07
Beiträge
116
Würde mich als Anfänger alles ziemlich überfordern, - trotzdem danke für die Tipp´s!