array klasse

Status
Nicht offen für weitere Antworten.

nobbi

Mitglied
hallo ich brauche hilfe!!
also wenn man z. B. ein Feld
feld = new int[2][];
feld[0] = new int[] {9, 10, 1000};
feld[1] = new int[] {200, 8};

dann soll gibAus("...") folgende Ausgabe produzieren:
9...10...1000
200... 8

meine klasse sieht so aus:
Code:
public class Matrix {
    
private int[][] array;


    public Matrix(int[][] testArray) {
        this.array = new int[testArray.length][];
        
        for (int i = 0; i < testArray.length; i = i + 1) {
            this.array[i][i] = testArray[i][i];
        }
    }
    
    void gibAus(String trenner) {
        
        for (int i = 0; i < this.array.length; i = i + 1) {
            for (int j = 0; j < this.array[i].length; j = j + 1) {
                System.out.print(this.array[i][j] + trenner);
                
            }
        System.out.println("");
        }
    }
}

weiss aber auch nicht ob der konstruktor und die methode richtig sind??

meine teste.java sieht so aus:
Code:
public class MatrixTest {
    

    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
         
        Matrix[][] testFeld1 = new Matrix[2][];
        
        testFeld1[0] = new Matrix[] {9, 10, 1000};
        testFeld1[1] = new Matrix[] {200, 8};
     }
    
}
Bei diesen Zeilen sagt der mir incompatible types??
testFeld1[0] = new Matrix[] {9, 10, 1000};
testFeld1[1] = new Matrix[] {200, 8};
wie rufe ich das denn sonst auf??
 
Also so wird das garnix! Du erstellst ja ein 2 Dimensionales array von Matrix objekten. Du brauchst aber nur eins.
Code:
public class MatrixTest { 
    
 
    
    /** 
     * @param args the command line arguments 
     */ 
    public static void main(String[] args) { 
        
        int testFeld1[][] = new  int[2][];        
        testFeld1[0] = {9, 10, 1000}; 
        testFeld1[1] = {200, 8}; 
        
        Matrix test = new Matrix(testFeld1);
     } 
    
}

Der Konstruktor erwartet doch ein 2Dim. Array. das Musst du im beim aufruf mitgeben (und natürlich vorher erstellen).
 
sorry, musste kurz mal weg :roll:

Ja hatte auch n fehler gemacht. Aber so geht das jetzt:
Code:
public class Matrix {

 private int[][] array;


     public Matrix(int[][] testArray) {
          array = testArray;  //das reicht aus ;-)
     }

     void gibAus(String trenner) {

         for (int i = 0; i < array.length; i++) {
             for (int j = 0; j < array[i].length; j++) {
                    if(j == array[i].length -1)       //die if-bedingung, weil der trenner sonst auch am ende ausgegeben würde
                          System.out.print(array[i][j]);
                    else
                          System.out.print(array[i][j] + trenner);
                 
             }
         System.out.println();
         }
     }
 }

Code:
 public class MatrixTest {



     /**
      * @param args the command line arguments
      */
     public static void main(String[] args) {

         int testFeld1[][] = {{9, 10, 1000},{200, 8}};

         Matrix test = new Matrix(testFeld1); //erst ein objekt erzeugen...
         test.gibAus(",");   //dann die methode zum ausgeben aufrufen

      }
}

Ich hab n paar kleine änderungen vorgenommen. Das sollte jetzt gehen
 
ja super danke!!nur noch eins mmh die aus gabe soll rechtsbündig ausgerichtet sein.also z.B.
1 ! 11 ! 111
22 ! 222 ! 2
333 ! 3 ! 33


wie macht man sowas?
 
wenn du java5 nutzt kannst du mit printf eine solche Ausgabe realisieren.

ansonsten bleibt dir nichts übrig als für jede Spalte den längsten Eintrag zu ermitteln und dann kleinere Einträge mit leerzeichen zu versehen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben