AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Java - Sortieren durch Austauschen - GUI
Thema durchsuchen
Ansicht
Themen-Optionen

Java - Sortieren durch Austauschen - GUI

Ein Thema von haui95 · begonnen am 5. Mai 2012 · letzter Beitrag vom 6. Mai 2012
Antwort Antwort
haui95

Registriert seit: 1. Feb 2012
Ort: Niedersachsen
29 Beiträge
 
Delphi 7 Personal
 
#1

Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 19:34
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);
            }
       }
   }
}
Hauke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 20:54
Dann debug das doch mal und guck, ob der Code überhaupt ausgeführt wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
haui95

Registriert seit: 1. Feb 2012
Ort: Niedersachsen
29 Beiträge
 
Delphi 7 Personal
 
#3

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 21:06
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 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
Hauke

Geändert von haui95 ( 5. Mai 2012 um 21:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 21:13
Natürlich in Einzelschritten oder setzt mal Breakpoints. Debuggen heißt nicht nur das Programm mit dem Debugger zu starten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
haui95

Registriert seit: 1. Feb 2012
Ort: Niedersachsen
29 Beiträge
 
Delphi 7 Personal
 
#5

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 21:31
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.
Hauke

Geändert von haui95 ( 5. Mai 2012 um 21:35 Uhr)
  Mit Zitat antworten Zitat
haui95

Registriert seit: 1. Feb 2012
Ort: Niedersachsen
29 Beiträge
 
Delphi 7 Personal
 
#6

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 21:40
Entschuldigung, mein Fehler ! Die Prozedur tauschen wird doch aufgerufen.
MfG
Hauke
  Mit Zitat antworten Zitat
haui95

Registriert seit: 1. Feb 2012
Ort: Niedersachsen
29 Beiträge
 
Delphi 7 Personal
 
#7

AW: Java - Sortieren durch Austauschen - GUI

  Alt 5. Mai 2012, 22:01
So, habe es nun selbst herausgefunden Habe beim Aufruf der Tauschen Methode keinen Array mit übergeben, nämlich lediglich nur zwei Strings

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);
                }
            }
        }
    }
Hauke
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Java - Sortieren durch Austauschen - GUI

  Alt 6. Mai 2012, 15:19
Ü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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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