Wo liegt der Fehler wieder ?

Status
Nicht offen für weitere Antworten.

kaper28

Bekanntes Mitglied
Code:
import javax.swing.*;

import java.util.Arrays;

public class Kisten_Verwaltung {
	

	
	
	 
	public static void main(String[] args) {
		int a;
		int [] []kisten = new int [3][5];
		
		for(int index=0; index<kisten.length; index++)
		
 a= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistennummer ein "));	

				
	System.out.println(kisten);		
	}
				
}
Hallo Leute,
Warum kriege ich dieses Ergebnis ?

[[I@ad3ba4
 
Das ist die "Adresse" des Arrays. Um ihn in einen String zu verwandeln, musst du für die "äußere" Dimension wohl eine Schleife verwenden. Für die innere würde auch Arrays.toString(...) gehen.
 
Code:
public static void main(String[] args) {
		int a;
		int [] []kisten = new int [3][5];
		
		
	
		
		for (int indexAussen=0; indexAussen<3; indexAussen++)
		for (int indexInnen=0; indexInnen<5; indexInnen++)
					a= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistennummer ein "));	

				
	System.out.println(kisten);		
	}
				
}
so was ?
 
stimmt , das kommt weil ich seit 3 stunden vor dem pc hänge

nur kann man auch alles in einem index packen ?
also nicht index2 oder index 3 wenn andere werte dazu kommen ?
 
Also der einzige weg das über einen Index laufen zu lassen wäre das alles in ein eindimensionales array zu packen.
für jede weitere dimension wird wohl ein index nötig sein
 
nur kann man auch alles in einem index packen ?
???

zeichne dir mal dein mehrdimmensionales array auf,
viele leute meinen, dass das irgend ein spezielles teil ist.
das ist einfach ein array und das array beinhaltet kein int werte sondern arrays und diese arrays beinhalten dann die int, also wie ein raster.
in kiste[2] ist kein int sondern ein array von int. und wenn du auf dieses array dan zugreifen willst schreibst einfach noch ein [x] dazu
zb...
kiste[2][4]..

ich würds mir am besten mal aufmahlen, papier und bleistift sind am anfang eine große hilfe

http://wwwuser.gwdg.de/~kboehm/ebook/bilder/07fig03.gif
http://www.informit.de/books/c++21/bilder/bld12_03.gif
 
Code:
  public static void main(String[] args) { 
    
      int [] []kisten = new int [2][5]; 
                //füllen  kistennummer
      for(int indexAussen=0; indexAussen<kisten.length; indexAussen++) { 
      for(int indexInnen=0; indexInnen<kisten[indexAussen].length; indexInnen++) { 
    	  
    	  
    	  
  kisten[indexAussen][indexInnen]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistennummer ein "));    
  kisten[indexAussen][indexInnen]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenlänge ein "));    
  kisten[indexAussen][indexInnen]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenbreitw ein "));             
  kisten[indexAussen][indexInnen]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die KistenHöhe ein "));                
    	      }     	
    	      }
                  
    	    	      
    	    	  
    //ausgeben 
     for(int indexAussen=0; indexAussen<kisten.length; indexAussen++) { 
             for(int indexInnen=0; indexInnen<kisten[indexAussen].length; indexInnen++) { 
            	 
                     	
                    	
                    	 System.out.println(kisten[0][0]); 
                    	 System.out.println(kisten[0][1]);  
                    	 System.out.println(kisten[0][2]); 
                    	 System.out.println(kisten[0][3]); 
                    	 System.out.println(kisten[0][4]); 
                     
                     }       
     
   
   
   
   
    
            	 }
  
   
}
}

Ich möchte alle diese 4 werte in einen Array ( int [] []kisten = new int [2][5]); speichern und wieder geben klappt aber nicht ? Könnet ihr mir helfen ?
mfg
kaper28
 
Du initialisiert immer mit kisten[indexAussen][indexInnen], das viermal hintereinander. Dadurch wird der Wert immer wieder überschrieben.

Ähnlich bei dem Abschnitt fürs ausgeben:

Wenn du nur
Code:
                        System.out.println(kisten[0][0]);
                        System.out.println(kisten[0][1]); 
                        System.out.println(kisten[0][2]);
                        System.out.println(kisten[0][3]);
                        System.out.println(kisten[0][4]);
ausgeben möchtest, dann kannst du die Schleifen auch weglassen. Es werden ja 10 mal hintereinander diese 5 Werte ausgegeben.
 
Morgyr hat gesagt.:
Du initialisiert immer mit kisten[indexAussen][indexInnen], das viermal hintereinander. Dadurch wird der Wert immer wieder überschrieben.

Ähnlich bei dem Abschnitt fürs ausgeben:

Wenn du nur
Code:
                        System.out.println(kisten[0][0]);
                        System.out.println(kisten[0][1]); 
                        System.out.println(kisten[0][2]);
                        System.out.println(kisten[0][3]);
                        System.out.println(kisten[0][4]);
ausgeben möchtest, dann kannst du die Schleifen auch weglassen. Es werden ja 10 mal hintereinander diese 5 Werte ausgegeben.

ja das habe ich auch bemerkt, nur wir mache ich das alle werte initialisiert werden ?
 
??
Was meinst du jetzt?

1.initialisieren:
Nimm noch eine Dimension, sprich int kisten[][][] = new int[2][5][4];
und dann eben:


Code:
for(int i1 = 0 ; i1 <= 1 ; i1++){
    for(int i2 = 0 ; i2 <= 4 ; i2++){
        kisten[i1][i2][0]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistennummer ein "));   
        kisten[i1][i2][1]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenlänge ein "));   
        kisten[i1][i2][2]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenbreitw ein "));             
        kisten[i1][i2][3]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die KistenHöhe ein "));           
    }
}

2.ausgeben:
Code:
for(int i1 = 0 ; i1 <= 1 ; i1++){
    for(int i2 = 0 ; i2 <= 4 ; i2++){
        System.out.println(kisten[i1][i2]);
    }
}
Edit: bzw. das Ausgeben dann anpassen an die weitere Dimension. Das sollte aber alleine zu schaffen sein.
Edit2: Mir ist grade aufgefallen, dass die for-Schleifen eine ArrayOutOfBoundsException ausgelöst haben müssten.
 
Code:
public static void main(String[] args) { 
	
      int [][] []kisten = new int [2][2][5]; 
                
      //füllen  kistennummer
      for(int indexAussen=0; indexAussen<kisten.length; indexAussen++) { 
      for(int indexInnen=0; indexInnen<kisten[indexAussen].length; indexInnen++) { 
    
    	  kisten[indexAussen][indexInnen][0]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistennummer ein "));    
          kisten[indexAussen][indexInnen][1]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenlänge ein "));    
          kisten[indexAussen][indexInnen][2]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kistenbreite ein "));             
          kisten[indexAussen][indexInnen][3]= Integer.parseInt(JOptionPane.showInputDialog("Bitte die KistenHöhe ein "));     
          
     kisten[indexAussen][indexInnen][4] = kisten[indexAussen][indexInnen][1]*kisten[indexAussen][indexInnen][2]*kisten[indexAussen][indexInnen][3];
    	     
      
      }     	
    	      }
                  
     
      
      
      
      
    	    	  
    //ausgeben 
   
      for(int indexAussen=0; indexAussen<kisten.length; indexAussen++) { 
             for(int indexInnen=0; indexInnen<kisten[indexAussen].length; indexInnen++) { 
               	
                    	
                    	 System.out.println("Kisten Nummer  : "+kisten[indexAussen][indexInnen][0]); 
                    	 System.out.println("Kisten Länge   : "+kisten[indexAussen][indexInnen][1]);  
                    	 System.out.println("Kisten Breite  : "+kisten[indexAussen][indexInnen][2]); 
                    	 System.out.println("Kisten Höhe    :"+kisten[indexAussen][indexInnen][3]); 
                    	 System.out.println("Kisten Volume  :" +kisten[indexAussen][indexInnen][4]);
                     
                    	 
                    	 
                     }       
     
   
   
   
   
    
            	 }
  
   
}
}

Soooooo, werden hier die Daten in den Array gespeichert oder nur ausgegeben ohne zu speichern ?
 
Du gibst die Werte doch hinterher aus. Sprich, die Werte !müssen! im Array gespeichert sein. Sonst ließen die sich nicht über den Array ausgeben. Oder versteh ich dich jetzt falsch?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben