Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Java - Sortieren durch Austauschen - GUI (https://www.delphipraxis.net/168115-java-sortieren-durch-austauschen-gui.html)

haui95 5. Mai 2012 18:34

Java - Sortieren durch Austauschen - GUI
 
Guten Tag,
ich bin vor knapp einer Woche mit Java angefangen und komme bis jetzt recht gut mit der Syntax und der OOP zurecht. Nun habe ich ein Programm geschrieben, dass hinzugefügte Namen in einer JList sortieren soll. Nun, das Programm läuft auch, es passiert jedoch nichts, wenn ich den Sortieren Button drücke.
Bin um jede Hilfe dankbar :)

Code:
package sortieren;

public class Sortieren
{
    public static void main(String[] args)
    {
        new SortierenGUI();
    }
}

Code:
package sortieren;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class SortierenGUI
{
    final int n = 100;
    String feld1[] = new String[n];
    int zaehler = 1;
   
    JFrame form1 = new JFrame("Sortieren");
    FlowLayout layout1 = new FlowLayout();
    JButton button1, button2, button3;
    JTextField edit1 = new JTextField();
    DefaultListModel model1 = new DefaultListModel();
    JList listbox1 = new JList(model1);
   
    public SortierenGUI()
    {
        button1 = new JButton("Hinzufügen");
        button1.addActionListener(new Buttonhandler());
        button2 = new JButton("Sortieren");
        button2.addActionListener(new Buttonhandler());
        button3 = new JButton("Beenden");
        button3.addActionListener(new Buttonhandler());
       
        edit1.setBounds(20, 20, 200, 20);
        form1.add(edit1);
        button1.setBounds(60, 70, 100, 25);
        form1.add(button1);
        button2.setBounds(60, 110, 100, 25);
        form1.add(button2);
        button3.setBounds(60, 150, 100, 25);
        form1.add(button3);
        listbox1.setBounds(300, 20, 250, 250);
        form1.add(listbox1);
       
        form1.setLayout(null);
        form1.setSize(590,330);
        form1.setVisible(true);
        form1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void hinzufuegen(String name)
    {
        feld1[zaehler] = name;
        zaehler ++;
    }
    void tauschen(String par1, String par2)
    {
        String temp;
       
        temp = par1;
        par1 = par2;
        par2 = temp;
    }
    void sortieren()
    {
        int i, j;
       
        for (i = 1; i < (n - 1); i ++)
        {
            for (j = i + 1; i < n; i ++)
            {
                String string1 = feld1[i];
                String string2 = feld1[j];
                if (string1 != null && string1.compareTo(string2) > 0)
                {
                    tauschen(feld1[i], feld1[j]);
                }
            }
        }
    }
    private class Buttonhandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if (e.getSource() == button1)
            {
                int i;
               
                hinzufuegen(edit1.getText());
                model1.clear();
                for (i = 1; i < n; i ++)
                {
                    if (feld1[i] != "")
                    {
                        model1.addElement(feld1[i]);
                    }
                }
                edit1.setText("");
            }
            else if (e.getSource() == button2)
            {
                int i;
               
                sortieren();
                model1.clear();
                for (i = 1; i < n; i++)
                {
                    if (feld1[i] != "")
                    {
                        model1.addElement(feld1[i]);
                    }
                }
            }
            else if (e.getSource() == button3)
            {
                System.exit(0);
            }
       }
   }
}

Luckie 5. Mai 2012 19:54

AW: Java - Sortieren durch Austauschen - GUI
 
Dann debug das doch mal und guck, ob der Code überhaupt ausgeführt wird.

haui95 5. Mai 2012 20:06

AW: Java - Sortieren durch Austauschen - GUI
 
Nun, habe jetzt das Programm über den Debugger laufen lassen, jedoch wird keine Fehlermeldung ausgegeben und das Programm läuft stabil. Das Problem ist, dass der Sortieren Button nicht funktioniert, d.h. er sortiert die String Einträge in der JList nicht.
Der Java Code basiert auf meinem zuvor gepostetem Delphi Code :D http://www.delphipraxis.net/167969-a...rozeduren.html
Ich habe den Selection-Sort als Übung für Java genutzt und würde natürlich gerne wissen, warum der der Java Code nicht richtig geht, also der Button nicht funktioniert ;)

MfG

Luckie 5. Mai 2012 20:13

AW: Java - Sortieren durch Austauschen - GUI
 
Natürlich in Einzelschritten oder setzt mal Breakpoints. Debuggen heißt nicht nur das Programm mit dem Debugger zu starten.

haui95 5. Mai 2012 20:31

AW: Java - Sortieren durch Austauschen - GUI
 
Wo soll ich die Breakpoints denn genau setzen ? Habe jetzt kurz vor Aufruf des Buttons einen gesetzt, kann aber nichts gravierendes erkennen. Und ich habe einen BreakPoint anschließend an die tauschen Prozedur gesetzt, und habe gemerkt, dass diese garnicht aufgerufen wird.

haui95 5. Mai 2012 20:40

AW: Java - Sortieren durch Austauschen - GUI
 
Entschuldigung, mein Fehler ! Die Prozedur tauschen wird doch aufgerufen.
MfG

haui95 5. Mai 2012 21:01

AW: Java - Sortieren durch Austauschen - GUI
 
So, habe es nun selbst herausgefunden ;) Habe beim Aufruf der Tauschen Methode keinen Array mit übergeben, nämlich lediglich nur zwei Strings :D

Code:
void tauschen(String[] array, int a, int b)
    {
        String temp = array[a];
        array[a] = array[b];
        array[b] = temp;
Code:
 void sortieren()
    {
        int i, j;
       
        for (i = 1; i < (n - 1); i ++)
        {
            for (j = i + 1; i < n; i ++)
            {
                String string1 = feld1[i];
                String string2 = feld1[j];
                if (string1 != null && string1.compareTo(string2) > 0)
                {
                    tauschen(feld1, i, j);
                }
            }
        }
    }

sx2008 6. Mai 2012 14:19

AW: Java - Sortieren durch Austauschen - GUI
 
Übrigens: Sortieren benötigt zwei Kernoperationen:
1.) Vergleichen
2.) Vertauschen
Das Vertauschen hast du in einer eigenen Funktion, aber das Vergleichen fehlt dir noch.
Indem man das Vergleichen und Vertauschen aus dem Sortieralorithmus herauslöst, kann man im Prinzip alles Sortieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz