[Java] Methoden für Arrays

ich benutz nur bei display vektor eine for schleife, bei sort benutz ich eine java funktion:

public static int[] sort(int[] a){

a= new int[]{3,5,7,9,2,1};
java.util.Arrays.sort(a);
return a;

}


Was muss ich jetzt in die main Methode schreiben, damit das richtige Ausgegeben wird und nicht nur der Speicher Stellen code?
 
Wie würdest du den Inhalt eines Arrays ausgeben auf dem Bildschirm?
 
Ich glaube nicht, dass ihr die vordefinierte sort Funktion nehmen sollt/dürft ;)

und wieso nutzt du zum Anzeigen nicht die bereits von dir geschriebene Funktion displayVector()?

Und warum benutzt du noch immer nicht die Code Tags hier im Forum???
 
Entweder du klickst auf das
code.png
Symbol oder du schreibst per Hand [ Code] dein Code [/Code] (bitte ohne das Leerzeichen)
 
Ich habs versucht genauso wie bei DisplayVektor zu machen, aber das klappt nicht. Könntet ihr es mir bitte komplett aufschreiben? Dann könnt ich vergleichen:wink:, auserdem, muss ich es morgen eh abgeben
 
Du sollst es nicht genauso mache wie bei displayVector() sondern du sollst es MIT displayVector() machen.

Im Prinzip hast du die Teilaufgaben doch schon gemacht, du musst diese nur zusammenführen.

Es ist doch so, du hast eine Funktion displayVector(Array) welche dir einen Array ausgeben kann.
Dann hast du eine Funktion sort(Array), die dir einen sortieren Array zurückgibt.
Entweder speicherst du diesen also oder du machst das etwa so:
Code:
int[] a...;
displayVector(sort(a));
Das gibt dir dann das sortierte Array aus.

Genauso kannst du auch displayMatrix(int[][] a) machen. Das ist ein Array von Array.
Du kannst nun also mit einer for-Schleife das "äußere Array" durchgehen (stell dir das wie spaltenweises Abarbeiten vor) und dann die jeweiligen inneren Array (sozusagen die einzelnen Zeilen), die ja nur noch einfache Arrays sind, wieder mit displayVector ausgeben.

Um hier auch mit etwas Pseudocode zu arbeiten:

gegeben ist die Funktion mit Parameter: displayMatrix(int[][] a) wobei wir die Zählvariablen mal so benennen: a[j]
du kannst nun also sowas machen:
Code:
for i = 0; i< length; i++
   displayVector(a[i])
das funktioniert, weil in a ja ein Array gespeichert ist, also genau das, was displayVector als Parameter erwartet. Es kann sein, dass ich i und j jetzt gerade durcheinandergebracht habe, das passiert mir häufiger, aber ich denke, damit solltest du verstehen, was ich meine und es umsetzen können.
 
Code:
int d[][]= {{1,3,5},{2,4,6}};
          int f[][]= {{1,3,5},{2,4,6}};
          System.out.println((multiply(d,f)));


Raus kommt ein Hash COde, wie mach ich den Array dahinter sichtbar?



Code:
    public static int[][] multiply(int[][] d, int[][] f) {
        int[][] c = null;

        if (d[0].length == f.length) {
            int zeilenm1 = d.length;
            int spaltenm1 = f[0].length;
            int spalenm2 = d[0].length;

            c = new int[zeilenm1][spalenm2];

            for (int i = 0; i < zeilenm1; i++) {
                for (int j = 0; j < spalenm2; j++) {
                    c[i][j] = 0;
                    for (int k = 0; k < spaltenm1; k++) {
                      c[i][j] += d[i][k] * f[k][j];
                    }
                }
            }
        } else {
            int zeilen = d.length;
            int spalten = d[0].length;

            c = new int[zeilen][spalten];
            for (int i = 0; i < d.length; i++) {
                for (int j = 0; j < d[0].length; j++) {
                    c[i][j] = 0;
                }
            }
        }
        return c;
        
    
    }


Das ist die Funktion dazu. Kann mir das einer bitte Korriegieren?:)
 
Code:
int d[][]= {{1,3,5},{2,4,6}};
          int f[][]= {{1,3,5},{2,4,6}};
          System.out.println((multiply(d,f)));


Raus kommt ein Hash COde, wie mach ich den Array dahinter sichtbar?

Da kommt ein Hash Code raus? Das glaube ich nicht.
Zu deine Frage, wie du das Array "sichtbar" machen kannst:

Nutze wieder deine Funktion displayArray(int[][] a) und nicht System.out.println()


Code:
    public static int[][] multiply(int[][] d, int[][] f) {
        int[][] c = null;

        if (d[0].length == f.length) {
            int zeilenm1 = d.length;
            int spaltenm1 = f[0].length;
            int spalenm2 = d[0].length;

            c = new int[zeilenm1][spalenm2];

            for (int i = 0; i < zeilenm1; i++) {
                for (int j = 0; j < spalenm2; j++) {
                    c[i][j] = 0;
                    for (int k = 0; k < spaltenm1; k++) {
                      c[i][j] += d[i][k] * f[k][j];
                    }
                }
            }
        } else {
            int zeilen = d.length;
            int spalten = d[0].length;

            c = new int[zeilen][spalten];
            for (int i = 0; i < d.length; i++) {
                for (int j = 0; j < d[0].length; j++) {
                    c[i][j] = 0;
                }
            }
        }
        return c;
        
    
    }


Das ist die Funktion dazu. Kann mir das einer bitte Korriegieren?:)

Funktioniert denn daran etwas nicht bzw. kommt etwas heraus, was du so nicht erwartest? Habe es jetzt aus Zeitmangel nicht überprüft, wir sind aber auch nicht unbedingt dafür da, deine Hausaufgaben zu überprüfen ;)
 
Code:
public static void main(String[] args)
    {
        int d[][]= {{1,3,5},{2,4,6}};
        int f[][]= {{1,3,5},{2,4,6}};
        int result[][] = multiply(d,f);
        displayVector(result[0]);
        displayVector(result[1]);
    }

    public static int[][] multiply(int[][] d, int[][] f) {
        int[][] c = null;

        if (d[0].length == f.length) {
            int zeilenm1 = d.length;
            int spaltenm1 = f[0].length;
            int spalenm2 = d[0].length;

            c = new int[zeilenm1][spalenm2];

            for (int i = 0; i < zeilenm1; i++) {
                for (int j = 0; j < spalenm2; j++) {
                    c[i][j] = 0;
                    for (int k = 0; k < spaltenm1; k++) {
                      c[i][j] += d[i][k] * f[k][j];
                    }
                }
            }
        } else {
            int zeilen = d.length;
            int spalten = d[0].length;

            c = new int[zeilen][spalten];
            for (int i = 0; i < d.length; i++) {
                for (int j = 0; j < d[0].length; j++) {
                    c[i][j] = 0;
                }
            }
        }
        return c;
    
    }
    
    private static void displayVector(int[] a) 
    {
      for (int i = 0; i < a.length; i++)
      {
         System.out.print(a[i] + " ");
      }
    }

... womit ich nicht sagen will daß multiply was sinnvolles liefert :)
 
Die Funktion sollte richtig sein, der Fehler muss an der Ausgabe liegen. Es kommt [[I@70d1c9b5 raus. Büdde Büdde korrigierts:D

Ganz ehrlich, wir helfen hier gerne Leuten, die willig sind zu lernen, aber bei dir fällt mir da so eine gewisse Lernresistenz auf.

1. Bitte lies dir die Beiträge immer GENAU durch!
2. Wende das dort geschriebene bitte auch an.
Woher weiß ich, dass du diese beiden Punkte nicht tust? Weil hier nun schon mehrere Fragen von dir gekommen sind, wo dir der entsprechende Tipp bereits direkt davor gegeben wurde.

In diesem Fall jetzt, dass du doch bitte nicht System.out.println nehmen sollst sondern deine displayVektor Funktion.
Die Aufgaben werden nicht ohne Grund gestellt und bauen aufeinander auf. Meistens kannst du also Funktionen, die du vorher verwendet hast wiederverwenden, womit wir auch bei einem wichtigen Thema der Programmierung sind, Wiederverwendung!

So und zu guter letzt:
3. Lerne bitte auch aus deinen Fehlern. In Beitrag 17 schreibst du:
System.out.println(sort (a));
und raus kommt:[I@3956f14c

Fällt dir da vielleicht irgendetwas auf?
 
Zurück
Oben