![]() |
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); } } } } |
AW: Java - Sortieren durch Austauschen - GUI
Dann debug das doch mal und guck, ob der Code überhaupt ausgeführt wird.
|
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 ![]() 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 |
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.
|
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.
|
AW: Java - Sortieren durch Austauschen - GUI
Entschuldigung, mein Fehler ! Die Prozedur tauschen wird doch aufgerufen.
MfG |
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); } } } } |
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 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz