Probleme beim Wiedereinstieg

Hi,
ich habe das Problem das ich schon länger nicht mehr programmiert habe und jetzt wieder einsteigen will und muss nur leider hapert es schon beim einfachsten. Ich habe jetzt garde leider mal keine Ahnung wo das Problem liegt. Ich bitte um Hilfe.
Wenn mir jemand helfen könnte wäre das nett ich denke der Sinn des Programmes ist ja nicht alzu schwierig zu ergründen also bei Fragen ein raus damit ich werde ständig gucken.

Der Code :

Java:
public class SortMain
{
  public static void main (String args[])
  {
    int [] zahlen = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} ;
    
    BubbleSort bubbleSort1 = new BubbleSort(int [] zahlen ) ;
    

  }
  
  
}


public class BubbleSort
{
  
    public void bubblesort (int zahlen[])
    {
      int zwischen = 0 ;
      int [] sortZahlen = new int [zahlen.length];

      for (int i = 0 ; i >= zahlen.length -1 ; i++ )
      {
        for (int y = i+1 ; y >= zahlen.length -1 ; y++ )
        {
          if (zahlen[y] > zahlen[y+1])
          {
            zwischen = zahlen[y];
            zahlen[y] = zahlen[y+1];
            zahlen[y+1] = zwischen;
          }
        }

      }

      for (int i = 0;i>= zahlen.length-1 ;i++ )
      {
        sortZahlen[i] = zahlen[i];
      }
    
    
    }

    public void ausgabe (int sortZahlen[])
    {
      for (int i = 0;i >= sortZahlen.length -1 ;i++ )
      {
       System.out.println(sortZahlen[i]);
      }
    }
     
  
 }
 
Das sieht mir aber nicht gerade nach Wiedereinstieg aus... 😉
Nunja, [c]public void bubblesort(int[] array)[/c] ist eine Methode. Die Klasse BubbleSort hat also keinen Konstruktor definiert, deswegen wird ein standard Konstruktor verwendet - [c]BubbleSort()[/c]. [c]new BubbleSort(int[] array)[/c] funktioniert also nicht. Zeile 10 mal in [c]public BubbleSort(int[] array)[/c] ändern.
 
Ich habe verstanden was du mit dem Konstruktor meintest das ich ihn nicht deklariert habe und deswegen der Standart Konstruktor verwandt wird . Ich habe nur nicht ganz die notwendigkeit gesehen und naja ich konnte dem was du geschrieben hast auch keine Lösung entnehmen ?!
Was soll ich jetzt ändern ?
 
Wie 'Spacerat' bereits schrieb benötigst du in der Klasse 'BubbleSort' einen Konstruktor der als Parameter ein [c]int[/c] Array erhalten kann.
 
Ich habe es jetzt so :

Java:
public class BubbleSort
{
  
   int [] zahlen = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} ;
   
    public BubbleSort(int[] ezahlen)
    {
       this.zahlen = ezahlen;
    }
    
    public void bubblesort (int[] zahlen)
    {
      int zwischen = 0 ;
      int [] sortZahlen = new int [zahlen.length];

      for (int i = 0 ; i >= zahlen.length -1 ; i++ )
      {
        for (int y = i+1 ; y >= zahlen.length -1 ; y++ )
        {
          if (zahlen[y] > zahlen[y+1])
          {
            zwischen = zahlen[y];
            zahlen[y] = zahlen[y+1];
            zahlen[y+1] = zwischen;
          }
        }

      }

      for (int i = 0;i>= zahlen.length-1 ;i++ )
      {
        sortZahlen[i] = zahlen[i];
        System.out.println(zahlen[i]);
      }


    }

    public void ausgabe (int sortZahlen[])
    {
      for (int i = 0;i >= sortZahlen.length -1 ;i++ )
      {
       System.out.println(sortZahlen[i]);
      }
    }

    
 }

public class SortMain
{
  public static void main (String args[])
  {
    // int [] zahlen = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} ;
    new BubbleSort(int[] zahlen) ;
    

  }
  
  
}

Die frage ist nur wieso funktioniert das nicht ? Er spuckt immer noch class expected und ) expected.
Ich hoffe wenn ich mich jetzt Nachts nochmal durch beiße und mir Fehler bewusst mache bin ich bald wieder auf dem alten Level ich habe von da noch ein paar Sachen. Naja zurück zum Thema wo ist Problematik ? 😀
 
Der Aufruf des Konstruktor müsste so lauten:
Java:
new BubbleSort(zahlen) ;

Desweiteren darf die Klasse 'BubbleSort', sofern sie sich mit 'SortMain' in einer Datei befindet, nicht public sein.
 
Ach und das der Aufruf des Konstruktors so lauten sollte ist dann schon klar nur wollte ich eigentlich die methode aufrufen aber ich habe schon gesehen das das Mumpitz war.

Habe den Aufruf jetzt so geschrieben :
Java:
    BubbleSort bsort1 = new BubbleSort(zahlen);
    bsort1.bubbleSort(zahlen);

Aber gibt einen Fehler aus und nicht das sortierte Array war er eigentlich tun sollte !!


-ERR Zugriffsverletzung bei Adresse 6D746EE3 in Modul 'jvm.dll'. Lesen von Adresse 00000000
-ERR Zugriffsverletzung bei Adresse 6D746EE3 in Modul 'jvm.dll'. Lesen von Adresse 00000000
 
Zuletzt bearbeitet:
Da läuft was furchtbar schief, das ist kein Fehler, den der Compiler bei deinem Programm anmeckert, sondern Java selbst hebt die Hufe hoch. Wenn du nicht die aktuellste Java-Version hast, wäre das ein guter Zeitpunkt zum Updaten.
 
Ich weiß nicht ob du den kennst ich nutze den Java Editor und den habe ich ganz neu runter gezogen. Also war ich davon ausgegangen das die Java Version ganz neu ist !! Scheinbar ist dem nicht der Fall.
Wo kriege ich den die neue her und welche jdk ne ? Ich habe Windows 7. Haste n Link mit nem sauberen Download ? Und wie sieht es auch mit dem einbinden ?
 
Nur weil du eine neue Version eines Editors/IDE heruntergeladen hast, heisst das nicht, dass auch eine der neuesten Java Versionen mitgeliefert wird.
Und wegen dem Downloadlink, ist das wirklich dein Ernst? Such bei Google nach "java download jdk" un du wirst innerhalb von 0.14 Sekunden fündig.:idea:
 
ICh habe es jetzt noch weiter vereinfacht mit nem feststehenden Array das lokal ist und tzrotzdem sorttiert er das nicht und gibt es auch nicht aus. Ich denke das er garnicht in die Methode rein geht und diese ausführt die Frage ist nur warum ?
Langsam kriege ich einen Krampf !

Java:
public class BubbleSort
{
   
    public BubbleSort()
    {
    
    }
    
    public void bubbleSort ()
    {
      int zwischen = 0 ;
      int [] zahlen = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} ;
      
      for (int i = 0 ; i >= zahlen.length -1 ; i++ )
      {
        for (int y = i+1 ; y >= zahlen.length -1 ; y++ )
        {
          if (zahlen[y] > zahlen[y+1])
          {
            zwischen = zahlen[y];
            zahlen[y] = zahlen[y+1];
            zahlen[y+1] = zwischen;
          }
        }

      }

      for (int i = 0;i>= zahlen.length-1 ;i++ )
      {
        System.out.println(zahlen[i]);
      }


    }

    
 }

public class SortMain
{
  public static void main (String args[])
  {
    BubbleSort bsort1 = new BubbleSort();
    bsort1.bubbleSort();
  }
  
  
}
 
Das [c]>=[/c](größer, oder gleich) müsste umgeändert werden in [c]<=[/c](kleiner, oder gleich).
Desweiteren kannst du auch einfach [c]<[/c] verwenden, somit musst du nicht mehr
Code:
-1
rechnen.
 
Das [c]>=[/c](größer, oder gleich) müsste umgeändert werden in [c]<=[/c](kleiner, oder gleich).
Desweiteren kannst du auch einfach [c]<[/c] verwenden, somit musst du nicht mehr
Code:
-1
rechnen.

Die Schleifenindizes sind völlig verkorkst, deine Vorschläge prinzipiell richtig, aber hier nicht ausreichend. So müsste es gehen:

Java:
      for (int max = zahlen.length - 1 ; max > 0; max-- )   {
        for (int i = 0 ; i < max ; i++ )   {
          if (zahlen[i] > zahlen[i+1])  {
            temp = zahlen[i];
            zahlen[i] = zahlen[i+1];
            zahlen[i+1] = temp;
          }
        }
      }
 

Neue Themen


Zurück
Oben