Zum Inhalt springen

java bubblesort


antenne

Empfohlene Beiträge

Okay. Erstmal: Das Einlesen der Zahlen brauchst du nur in main - in sortiere hat das nichts zu suchen. Ich mache mal ein paar Änderungen an deinem Code, die hoffentlich helfen, das Problem zu verdeutlichen:

 

      public static void sortiere(int[] zahlenArray) {
      boolean unsortiert=true;
      int temp;     
      
      // überflüssiges Einlesen von Zahlen entfernt

      while (unsortiert){
         unsortiert = false;
         for (int arrayIndex = 0; arrayIndex < zahlenArray.length-1; arrayIndex++)
            int aktuelleZahl = zahlenArray[arrayIndex];
            if (aktuelleZahl > zahlenArray[arrayIndex + 1]) {                      
               temp       = aktuelleZahl;
               aktuelleZahl  = zahlenArray[arrayIndex + 1];
               zahlenArray[arrayIndex + 1]     = temp;
               unsortiert = true;
            }          
      }
   }
Wenn du die Zeile 
int aktuelleZahl = zahlenArray[arrayIndex];
 nicht hast, dann würdest du darunter folgendes stehen haben: 
if(zahlenArray > zahlenArray[arrayIndex + 1])
 Ich hoffe, es leuchtet ein, wieso das nicht funktionieren kann.
Bearbeitet von arlegermi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay. Erstmal: Das Einlesen der Zahlen brauchst du nur in main - in sortiere hat das nichts zu suchen. Ich mache mal ein paar Änderungen an deinem Code, die hoffentlich helfen, das Problem zu verdeutlichen:

 

      public static void sortiere(int[] zahlenArray) {
      boolean unsortiert=true;
      int temp;     
      
      // überflüssiges Einlesen von Zahlen entfernt

      while (unsortiert){
         unsortiert = false;
         for (int arrayIndex = 0; arrayIndex < zahlenArray.length-1; arrayIndex++)
            int aktuelleZahl = zahlenArray[arrayIndex];
            if (aktuelleZahl > zahlenArray[arrayIndex + 1]) {                      
               temp       = aktuelleZahl;
               aktuelleZahl  = zahlenArray[arrayIndex + 1];
               zahlenArray[arrayIndex + 1]     = temp;
               unsortiert = true;
            }          
      }
   }
Wenn du die Zeile 
int aktuelleZahl = zahlenArray[arrayIndex];
 nicht hast, dann würdest du darunter folgendes stehen haben: 
if(zahlenArray > zahlenArray[arrayIndex + 1])
 Ich hoffe, es leuchtet ein, wieso das nicht funktionieren kann.

leider alles dunkel hier. Ist wirklich schwierig sich das ganze Grundzeug selbst beizubringen ohne Lehrer. Ich habe bei meiner BG schon Stützunterricht für Java angemeldet aber der findet wohl erst im Dezember statt, da es extrem wenige Dozenten gibt die Java beherrschen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

arlegermi hat das Problem schon verdeutlicht. Bei der Ausgabe hast Du dann das gleiche Problem.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BubbleSort {
   public static void sortiere(int[] x) {
    boolean unsortiert=true;
    int temp;
 
    while (unsortiert){
     unsortiert = false;
     for (int i=0; i < x.length-1; i++)
      if (x[i] > x[i+1]) {                      
         temp       = x[i];
         x[i]       = x[i+1];
         x[i+1]     = temp;
         unsortiert = true;
      }          
    }
   }
   
   public static void main(String[] args) throws IOException {
     InputStreamReader isr = new InputStreamReader(System.in);
      BufferedReader br = new BufferedReader(isr);
      System.out.print("Erste Zahl: ");
      String eingabe1 = br.readLine();
      System.out.print("Zweite Zahl: ");
      String eingabe2 = br.readLine();
      System.out.print("Dritte Zahl: ");
      String eingabe3 = br.readLine();
      int zahl1 = Integer.parseInt(eingabe1);
      int zahl2 = Integer.parseInt(eingabe2);
      int zahl3 = Integer.parseInt(eingabe3);
    
  int[] liste = {zahl1,zahl2,zahl3};
    sortiere(liste);
    for (int i=0; i<liste.length; i++)
     System.out.print(liste[i]+" ");    
   }
}

Bei mir läuft es

Gruß
schlumpfen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, 

leider alles dunkel hier. Ist wirklich schwierig sich das ganze Grundzeug selbst beizubringen ohne Lehrer. Ich habe bei meiner BG schon Stützunterricht für Java angemeldet aber der findet wohl erst im Dezember statt, da es extrem wenige Dozenten gibt die Java beherrschen.

http://www.java-tutorial.org/java-grundlagen.html

ich gehe mal davon aus ihr befindet euch im Lernfeld 6: Entwickeln und Bereitstellen von Anwendungssystemen. Gibt es an eurer Schule ein eingeführtes Fachbuch?
Wurde im ersten Ausbildungsjahr auch schon Java unterrichtet? Evtl. gibt es ja einen Mitschüler der die Grundlagen dokumentierte hat.

Was genau macht ihr im Unterricht? Das Problem das Du hier gerade angehst ist ja schon etwas gehobener Anspruch.

Gruß
schlumpfen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, 

http://www.java-tutorial.org/java-grundlagen.html

ich gehe mal davon aus ihr befindet euch im Lernfeld 6: Entwickeln und Bereitstellen von Anwendungssystemen. Gibt es an eurer Schule ein eingeführtes Fachbuch?
Wurde im ersten Ausbildungsjahr auch schon Java unterrichtet? Evtl. gibt es ja einen Mitschüler der die Grundlagen dokumentierte hat.

Was genau macht ihr im Unterricht? Das Problem das Du hier gerade angehst ist ja schon etwas gehobener Anspruch.

Gruß
schlumpfen

was wir in der Schule machen steht im ersten post. In Kurzform: Der Lehrer ist kein richtiger Lehrer. Fragen beantwortet er mit einem Schulterzucken. Java war im ersten Jahr schon dran. Muss ich mal fragen ob da wer was daheim hat. Der Java Unterricht besteht daraus, Übungen an die Wand zu Beamern und 10 min zu warten in der Hoffnung einer hat es hingekriegt. Danach gibts die Lösung, natürlich schon vorgeschrieben. Ich denke mal er bekommt die Aufgaben von jemand anderen. Ich dachte 3 Zahlen sortieren wäre absoluter Urschleim, weil es sich ja einfach anhört. Es hatte ja schon soweit alles gepasst wo ich es mit if und else if gemacht habe, allerdings auch mehr kopiert als selber erarbeitet...leider.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

was heißt kein richtiger Lehrer und was für Aufgaben werden da an die Wand geworfen?

Du bist bei einem Bildungsträger oder in einer Firma und in der Berufsschule?

Gruß
schlumpfen

Mit richtige Lehrer meine ich, dass er kaum Ahnung von Java hat, nie selbst was schreibt und immer nur fertige Lösungen an die Wand strahlt. Es sind Aufgaben wie, programmiere 3 Würfel, Ob ein Wort ein Palindrom ist also z.B. Lagerregal, ein Fahrstuhl der je nach Stockwerk ausgibt wie das Stockwerk heißt. Und noch ähnliche Sachen. Im ersten Jahr hatten die Schüler einen anderen Lehrer und sind jetzt alle mehr als enttäuscht von diesem, da der Alte es richtig erklären konnte. Die Umschulung ist wie eine normale Lehre. Also Betrieb und Berufsschule.

 

Und vielen dank für den richtigen Code. Funktioniert super. Auch wenn man es dann auf 6 Zahlen oder mehr erweitert. Mir war nicht bewusst, dass man wenn dann nur arrays verwendet mit x. Schade, dass ich es einfach nicht gecheckt habe. Was wären denn gute Übungen für absolute Anfänger?

Bearbeitet von antenne
Link zu diesem Kommentar
Auf anderen Seiten teilen

Was wären denn gute Übungen für absolute Anfänger?

Eigentlich hast du schon ganz sinnvolle Beispiele genannt - Zahlen sortieren, Strings zerlegen - das kann man ja an 1000 verschiedenen kleinen Beispielen üben.

Project Euler ist ein großes Sammelwerk von mathematischen Problemen verschiedener Schwierigkeit. Code Wars ist auch sehr schön: eine Plattform, auf der man nach und nach immer schwierigere Aufgaben lösen (programmieren) muss. Da gibt es dann eine Art Bewertungssystem mit Ranking und Diskussionen über elegante Lösungen. Kann ich sehr empfehlen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich würde mir fertige Algorithmen anschauen und kommentieren (z.B. kommentier mal den Sortieralgorithmus, was man die Funktion sortieren genau?). Dazu natürlich Grundlagen. s. Webseite die ich schon geschickt habe.

Evtl. auf eine einfache IDE gehen (BlueJ, dort gibt es auch ein Tutorial)

Programmiere nicht einfach drauf los, mach Dir erst einmal einen Plan (PAP, Struktogramm, Pseudocode). Wie würdest Du das Problem lösen (ganz ohne Java) und dann versuch diesen Plan in Java umzusetzen.

Als SI benötigst Du nicht viel Programmieren...

Ganz Platt: AE, schöner sauberer eleganter Quellcode, SI funktionierender Quellcode (ohne Redundanz)

Gruß
schlumpfen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich finde die Sammlung unter https://github.com/karan/Projects ja ganz angenehm, um sich Programmierziele rauszupicken. Da sind einige dabei, die selbst für erfahrene Entwickler anspruchsvoll sind, aber gerade in den "Numbers"- und "Text"-Kategorien sind einige schöne Sachen dabei, die sich auch für Anfänger eignen.

Und unter https://github.com/karan/projects-solutions finden sich zu vielen Problemen auch Java-Lösungen, falls man mal partout nicht weiterkommt.

Bearbeitet von arlegermi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wollte noch was hinzufügen. Ich war mal auf der codewars seite. aber das ist wohl alles andere als für Anfänger. Die erste Übung hatte gleich soviel Begriffe und andere Sachen die ich noch nicht mal irgendwo gelesen hatte. Konnte bei keiner Aufgabe auch nur erahnen was zu tun ist. Wird noch eine ganze Weile dauern bis ich da irgendwas als Übung benutzen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Mir scheint, dass du mit der dir gestellten Aufgabe völlig überfordert bist. Such dir besser erst mal einfachere Aufgaben.

Am besten arbeitest du mal ein Java-Lehrbuch von Anfang an durch. Nichts überspringen, auch wenn du glaubst, du kannst es schon. Du hast noch einige Lücken, die du dringend füllen musst.

Ich kann dir hier besonders das Buch Java ist auch eine Insel aus dem Rheinwerk-Verlag empfehlen. Dort wird der Stoff anfängergerecht erklärt und aufbereitet. Außerdem kannst du hier wirklich noch mal alles wiederholen und so Lücken schließen.

Generell möchte ich dir auch noch die Literaturliste des Anwendungsentwickler-Podcasts nahe legen. Hier findest du Tips zu weiteren Büchern und Tutorials zum Thema Java.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...