Arrays.toString(); funktioniert nicht

Status
Nicht offen für weitere Antworten.

kaper28

Bekanntes Mitglied
Code:
import javax.swing.*;
import java.util.Arrays;
public class lager {

	public static void datenEingeben() {
		int[][] aEingabe = new int[100][100];

		int nummer;

		int breite, laenge, hoehe;

		do {
			nummer = Integer.parseInt(JOptionPane
					.showInputDialog("Bitte eine Kistennummer: 1 - 100"));

			if (nummer < 1 || nummer > 100) {
				System.out.println("Falsche Kistennummer Eingegeben");
			} else if (aEingabe[nummer - 1][0] == nummer) {
				break;
			} else {
				// Nummer zuweisen 
				aEingabe[nummer - 1][0] = nummer;
				breite = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenbreite"));
				aEingabe[nummer - 1][1] = breite;

				laenge = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenlänge"));
				aEingabe[nummer - 1][2] = laenge;

				hoehe = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenhöhe"));
				aEingabe[nummer - 1][3] = hoehe;

				aEingabe[nummer - 1][4] = breite * laenge * hoehe;
				System.out.println("Kistennummer :" + aEingabe[nummer - 1][0]);
				System.out.println("Kistenbreite :" + breite + " cm ");
				System.out.println("Kistenlänge :" + laenge + " cm ");
				System.out.println("Kistenhöhe : " + hoehe + " cm ");

				System.out
						.println("Volume Beträgt :" + aEingabe[nummer - 1][4]);
			}

		} while (true);
		System.out.println(" Diese Kistennummer wurde bereits  Eingegeben");
	}

	public static void datenlisten() {
		int[][] aEingabe = new int[100][100];
		
		
		System.out.println(Arrays.toString(aEingabe));
	
	}
	public static void loeschen(){
		int[][] aEingabe = new int[100][100];
		int nummer ;
		nummer = Integer.parseInt(JOptionPane
				.showInputDialog("Bitte eine Kistennummer eingeben zum löschen "));

		if (aEingabe[nummer - 1][0] == nummer)
		{
			
			
		 nummer=0;
		 System.out.println("Kistennummer ist wieder " + nummer )	;
		}
		else 
		{
			System.out.println("So eine Kiste gibt es nicht ")	;
		}
		
		
	
	}

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

		String  einlesen ;
		char auswahl;
		
		System.out.println("Sie haben die Folgende Auswahl");
		System.out.println(" a : "+ " Daten Eingabe");
		System.out.println(" b : "+ " Daten Listen Finktion");
		System.out.println(" c : "+ " Daten Loeschen");
		einlesen =JOptionPane.showInputDialog("Bitte Treffen Sie ihre Wahl");
		
		auswahl=einlesen.charAt(0);
		
		
		switch(auswahl){
		
		case 'a':
			datenEingeben();
			break;
		case 'b':
			datenlisten();
			break;
		case 'c':
			loeschen();
		break;
		}
		
		
	}

}

Ich möchte mit der Methode datenlisten, eine liste auf der Konsole zeigen der mir alle eingegeben daten zeigen soll. iich habe es mit der Arrays.toString methode versucht hat leider nicht funktioniert. Wo liegt das fehler ?

und wenn ich schon dabei bin , bei der loeschen methode will ich eine eingegebene Kistennummer auf 0 setzen. Ich denke das ist auch falsch ....
 
1. weil du ein 2 dimensionales array hast ->

Code:
for (int[] i : aEingabe) {
  System.out.println(Arrays.toString(i));
}

2. man kann ein array nicht bearbeitet, du kannst nur ein neues anlegen und die elemente da rein kopieren, oder du setzt den wert auf einen sinnvollen wert wie du es schon gemacht hast bzw null. Ansonsten würde ich dir eine Collection empfehlen
 
Code:
import javax.swing.*;
import java.util.Arrays;
public class lager {

	public static void datenEingeben() {
		int[][] aEingabe = new int[4][5];

		int nummer;

		int breite, laenge, hoehe;

		do {
			nummer = Integer.parseInt(JOptionPane
					.showInputDialog("Bitte eine Kistennummer: 1 - 100"));

			if (nummer < 1 || nummer > 100) {
				System.out.println("Falsche Kistennummer Eingegeben");
			} else if (aEingabe[nummer - 1][0] == nummer) {
				break;
			} else {
				// Nummer zuweisen 
				aEingabe[nummer - 1][0] = nummer;
				breite = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenbreite"));
				aEingabe[nummer - 1][1] = breite;

				laenge = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenlänge"));
				aEingabe[nummer - 1][2] = laenge;

				hoehe = Integer.parseInt(JOptionPane
						.showInputDialog("Kistenhöhe"));
				aEingabe[nummer - 1][3] = hoehe;

				aEingabe[nummer - 1][4] = breite * laenge * hoehe;
				System.out.println("Kistennummer :" + aEingabe[nummer - 1][0]);
				System.out.println("Kistenbreite :" + breite + " cm ");
				System.out.println("Kistenlänge :" + laenge + " cm ");
				System.out.println("Kistenhöhe : " + hoehe + " cm ");

				System.out
						.println("Volume Beträgt :" + aEingabe[nummer - 1][4]);
			}

		} while (true);
		System.out.println(" Diese Kistennummer wurde bereits  Eingegeben");
	}

	public static void datenlisten() {
		int[][] aEingabe = new int[4][5];
		int nummer=1;

		int breite, laenge, hoehe;
		for ( int  [] a:aEingabe){
	
					
			nummer = Integer.parseInt(JOptionPane
					.showInputDialog("Bitte eine Kistennummer: 1 - 100"));
					
			
			aEingabe[nummer - 1][0] = nummer;
			breite = Integer.parseInt(JOptionPane
					.showInputDialog("Kistenbreite"));
			aEingabe[nummer - 1][1] = breite;

			laenge = Integer.parseInt(JOptionPane
					.showInputDialog("Kistenlänge"));
			aEingabe[nummer - 1][2] = laenge;

			hoehe = Integer.parseInt(JOptionPane
					.showInputDialog("Kistenhöhe"));
			aEingabe[nummer - 1][3] = hoehe;

			aEingabe[nummer - 1][4] = breite * laenge * hoehe;
			
			System.out.println(Arrays.toString(a));
	}
					
				
					}
	
	public static void loeschen(){
		int[][] aEingabe = new int[4][5];
		int nummer ;
		nummer = Integer.parseInt(JOptionPane
				.showInputDialog("Bitte eine Kistennummer eingeben zum löschen "));

		if (aEingabe[nummer - 1][0] == nummer)
		{
			
			
		 nummer=0;
		 System.out.println("Kistennummer ist wieder " + nummer )	;
		}
		else 
		{
			System.out.println("So eine Kiste gibt es nicht ")	;
		}
		
		
	
	}
      public static void  datenändern(){


}
     public static void datenanzeigen(){
 
 
 
 }
 
 

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

		String  einlesen ;
		char auswahl;
		
		System.out.println("Sie haben die Folgende Auswahl");
		System.out.println(" a : "+ " Daten Eingabe");
		System.out.println(" b : "+ " Daten Listen Funktion");
		System.out.println(" c : "+ " Daten Loeschen");
		System.out.println(" d : "+ " Daten Ändern");
		System.out.println(" d : "+ " Daten Anzeigen");
		einlesen =JOptionPane.showInputDialog("Bitte Treffen Sie ihre Wahl");
		
		auswahl=einlesen.charAt(0);
		
		
		switch(auswahl){
		
		case 'a':
			datenEingeben();
			break;
		case 'b':
			datenlisten();
			break;
		case 'c':
			loeschen();
		break;
		case 'd':
			datenändern();
			break;
		case 'e':
			datenanzeigen();
			break;
		
		
		
		}
		
		
	}

}

Wenn ich die Methode datenlisten so schreibe dann zeigt er mir die Arrays , nur ich möchte sie nicht neue schreiben sondern mit der option a dateneingeben geschriebene anzeigen lassen ... das kann ich nicht ?
 
das Array aus datenEingeben() ist dort eine lokale Variable,
am Ende der Operation ist es verschwunden,

am Anfang von datenlisten() steht
int[][] aEingabe = new int[4][5];

wie kannst du vermuten, dass dieses neu erzeugte Array noch die alten Daten beinhaltet?
du musst das Array als statische Variable ablegen, nicht ständig neu erzeugen

-------

die datenlisten()-Operation ist aber auch sonst merkwürdig,
du durchläufst das 100er-Array, (was man gar nicht abbrechen kann?)
und gibst nacheinander Array0-99 aus,
währenddessen kann der User aber gleichzeitig Nummern und Daten eingeben, und damit eine beliebige Kiste ändern,
das kann zufällig die aktuelle sein, eine vorherige oder eine zukünftige,
sehr schräg,

-------

allgemeine Tipps:
1. versuche die erstmal mit der Eingabe und Anzeige einer einzelnen Ziffer/ String
oder einem eindimensionalen Array,
wozu gleich an komplizierte Kisten denken, wenn du noch nichtmal statische Variablen kennst?

2. die kombinierte Steuerung aus System.out.println und JOptionPane ist der reinste Horror,
bau entweder eine normale GUI, was aber zu schwer sein dürfte,
oder eine normale Konsoleneingabe
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben