Hilfe bei Array mit Shakersort gesucht

deadahead90

Neues Mitglied
Hi Leute,

ein Kumpel und ich ich haben die Aufgabe, ein Array zu erstellen mit zufälligen Zahlen und dieses dann mit dem Shakersort sortieren zu lassen. Beim compilieren kommen allerdings 2 Fehler heraus, wir vermuten, dass diese mit der Deklaration der Klasse zusammenhängen, doch wissen einfach keine Lösung dafür. Wir sind beide noch Anfänger, was das Programmieren mit Java angeht.
Villeicht kann uns ja Jemand weiterhelfen, vielen Dank schonmal im Voraus :) .

Java:
import java.util.Random;

public class Shakersort {   // öffentliche klasse => Deklarieren des Shakersort

   public int[] intArr = z[p];                 // public, damit es auch im Nachfolgenden Teil verwendet werden kann
   int k;                           // int Variable, die mit dem Array oben verknüpft ist

   public void Zufallszahlen (String[] args) {         // öffentliche Deklaration der Zufallszahlen, damit diese auch unten verwendet werden können
     int[] z = new int[10];                 // neues Array mit Feldgröße 10
     for (int p = 0; p < 10; p++) {             // Zählvariable p, gleichzeitig auch Begrenzung
       z[p] = (int)(Math.random() * 100 + 1);       // Zufallszahlen erzeugen
     }
   }  

   public int[] sort() {                   // Sortierfunktion wird deklariert und später beschrieben
     int i = 0, l = intArr.length;             // weiter int Variablen, i als Zählvariable und l als Begrenzung, bzw. länge des obigen Arrays
     while (i < l) {                     // i zählt solange hoch, bis es noch kleiner als l ist
       shaker1(i, l);                   // shaker 1 wird erstellt, l zählt runter
       l--;   
       shaker2(i, l);                   // shaker 2 wird erstellt und läuft gegen shaker 1, da i hochgezählt wird
       i++;
     }
     return intArr;                     // Anweisung, um das Array weiter zu benutzen, auch außerhalb der Deklaration "sort"
   }

   private void shaker1(int i, int l) {           // untere Klasse um shaker 1 zu konkretisieren, bzw. ihm eine Funktion zu geben
     for (int j = i; j < l - 1; j++) {           // j als neue Zählvariable, da i nichtg nocheinmal verwendet werden darf, allerdings meint ja dasselbe wie i, j wird hochgezählt
       if (intArr[j] > intArr[j + 1]) {   ´       // if-Bedingung, dass das Array in Abhängigkeit von j größer sein muss, als das Array von j+1
         k = intArr[j];                 // k wird ein Wert zugewiesen
         intArr[j] = intArr[j + 1];           // Gleichsetzen der Arrayabhängigkeiten
         intArr[j + 1] = k;               // Ersetzen der einen Abhängigkeit durch die oben zugeführte Variable k
       }
     }
   }

   private void shaker2(int i, int l) {           // untere Klasse, dieses mal um shaker 2 zu konkretisieren, bzw. diesem eine Funktion zu geben
     for (int j = l - 1; j >= i; j--) {           // wie oben, jedoch wird dieses mal runtergezählt, also von der anderen Richtung durchlaufen
       if (intArr[j] > intArr[j + 1]) {         // if-Bedingung, dass das Array in Abhängigkeit von j größer sein muss, als das Array von j+1
         k = intArr[j];                 // k wird ein Wert zugewiesen
         intArr[j] = intArr[j + 1];           // Gleichsetzen der Arrayabhängigkeiten
         intArr[j + 1] = k;               // Ersetzen der einen Abhängigkeit durch die oben zugeführte Variable k, selbes Vorgehen wie oben, jedoch von anderer Seite
       }
     }
   }

   public static void main(String[] args) {         // jetzt erst Hauptmethode, um die obigen Ereignisse anzuzeugen
     Shakersort ss = new Shakersort();           // neuer Shakersort
     int[] arr = ss.sort();                 // neues int abhängigkeits Array erstellent
     for (int i = 0; i < arr.length; i++) {     // for-Schleife, um hochzuzählen, bzw. um Nummern vor die Sortierten Zahlen zu schreiben
       System.out.println(i + 1 + ": " + arr[i]);     // Ausgabe der Ergebnisse, sortiert und nummeriert
     }
   }
}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Euer Fehler kommt von dieser Zeile:

Java:
   public int[] intArr = z[p];                 // public, damit es auch im Nachfolgenden Teil verwendet werden kann

   public void Zufallszahlen (String[] args) {         // öffentliche Deklaration der Zufallszahlen, damit diese auch unten verwendet werden können
     int[] z = new int[10];                 // neues Array mit Feldgröße 10
     for (int p = 0; p < 10; p++) {             // Zählvariable p, gleichzeitig auch Begrenzung
       z[p] = (int)(Math.random() * 100 + 1);       // Zufallszahlen erzeugen
     }
   }

Das Problem: In der Methode "Zufallszahlen" deklariert ihr ein lokales int Array und füllt diese mits Zufallszahlen. (das kompiliert aber noch).
Was euch den Fehler bringt ist das ihr dann "z[p]" einfach so außerhalb dieser Methode verwenden wollt als Initialwert für die Instanzvariable "intArr"

Fehler 1: z[p] wäre in diesem Zusammenhang ein einfacher int Wert und kann daher keiner Variable vom Typ int[] zugewiesen werden
Fehler 2: Die Variable "z" und die Variable "p" sind an dieser Stelle nicht bekannt (da es lokale Variablen der Methode bzw. der Schleife in der Methode sind).
 

Neue Themen


Oben