www.r-krell.de |
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr |
Willkommen/Übersicht > Informatik > Informatik mit Java, Teil c) > Programm zum Sortieren und Suchen von Komma-Zahlen
Nach dem Webstart erscheint in einem eigenen Fenster
das Programm Sort_2012 mit verschiedenen Sortier- und Suchverfahren:
Die Bedienung erfolgt durch die Schaltflächen.
Gesuchte Kommazahlen bitte mit Punkt statt Komma eingeben.
Die binäre Suche ([bin. Suche] bzw. [bin. S. rek.])
funktioniert nur korrekt, wenn vorher schon sortiert wurde.
Wenn die Java-JRE installiert ist, können Sie das Programm jetzt sofort ausführen:
Hier klicken zum Webstart der Sortier- & Such-Demo |
Danach Öffnen von Sortieren-Suchen.jnlp [mit Java(TM) Webstart Launcher
(Standard)] wählen/bestätigen
und bei evtl. Sicherheitswarnung vor der Ausführung von Sort_2012_Start das Risiko akzeptieren und OK
drücken.
Wenn Sie außerdem gefragt werden, ob Sie eine Desktop- und eine Startmenüverknüpfung
anlegen wollen,
sollten Sie zustimmen, wenn Sie das Programm auch nach Verlassen dieser Webseite nochmal ausprobieren wollen.
Wird nach dem Klick Sortieren-Suchen.jnlp herunter geladen oder werden Sie gefragt, womit Sie
Sortieren-Suchen.jnlp öffnen wollen
oder ob/wohin Sie die Datei speichern wollen, haben Sie entweder kein Java installiert oder ihr Browser (z.B. Opera) unterstützt keinen
Webstart.
Im letzten Fall empfiehlt sich nachfolgend der Download der .jar-Datei:
Sie können die Sortier- und Such-Demo auch als ausführbare Java-Datei Sortieren&Suchen(r-krell.de).jar (21 kB) herunter laden und später lokal auf Ihrem Rechner starten (Java-Umgebung JRE vorausgesetzt). Die Ausführung als Applet im Browser wird von mir hingegen nicht mehr angeboten: Gründe, Abhilfe und alle Downloads (in neuem Tab)
Der Quelltext der Oberfläche ist unten abgedruckt;
außerdem kann hier der Quelltext des Programms zusammen mit der ausführbaren .jar-Datei in einem zip-Archiv (27
kB) herunter geladen werden.
Als Java-Texte werden nur die drei .java-Dateien benötigt, während die .jfm-Formulardatei nur für Benutzer des Java-Editors
interessant ist.
Die beigefügte .jfm-Datei funktioniert auch mit älteren Versionen des Java-Editors; schon beim Öffnen mit einer Version 10 oder
höher
wird sie aber automatisch verändert und ist danach nicht mehr abwärtskompatibel. Die .jnlp-Datei wird nur für den Webstart
benötigt.
zurück zur Seite „Informatik mit Java, Teil c)"
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/*
* description Oberfläche zu
Sortieren und Suchen von Kommazahlen -- Implementation verschiedener Verfahren
*
* @version 4.1 from 16.12.2012
* @author R. Krell, www.r-krell.de,
für www.r-krell.de/if-java-c.htm bzw. www.r-krell.de/if-c-sortapp.htm
*/
public class Sort_2012_Oberflaeche extends JFrame {
// Anfang Attribute
Sort_2012 sortierdemo = new Sort_2012(); // bindet ein Objekt ein, das die Kommazahlen enthält und die Arbeit macht
private JLabel jLbTitel = new JLabel();
private JLabel jLbAnzahl = new JLabel();
private JTextField jTfAnzahl = new JTextField();
private JLabel jLbBereich = new JLabel();
private JButton jBtZufall = new JButton();
private JButton jBtBubble1 = new JButton();
private JButton jBtBubble2 = new JButton();
private JButton jBtMin = new JButton();
private JButton jBtMaxS = new JButton();
private JButton jBtEinS = new JButton();
private JButton jBtShaker1 = new JButton();
private JButton jBtMehr = new JButton();
private JScrollPane jScrollPane1 = new JScrollPane();
private JTextArea jTaAusgabe = new JTextArea("");
private JButton jBtZeigen = new JButton();
private JTextField jTfGesucht = new JTextField();
private JButton jBtSeqSuche = new JButton();
private JButton jBtBinSuch = new JButton();
private JButton jBtBubbleRek = new JButton();
private JButton jBtQuick = new JButton();
private JButton jBtSuche1rek = new JButton();
private JButton jBtbinSucheRek = new JButton();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
// Ende Attribute
public Sort_2012_Oberflaeche (String title) {
super (title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 546;
int frameHeight = 447;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
jLbTitel.setBounds(8, 8, 361, 24);
jLbTitel.setText("Sortier- u. Such-Demo mit Komma-Zahlen");
jLbTitel.setFont(new Font("MS Sans Serif", Font.PLAIN, 17));
cp.add(jLbTitel);
jLbAnzahl.setBounds(32, 48, 63, 16);
jLbAnzahl.setText("Anzahl = ");
jLbAnzahl.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLbAnzahl);
jTfAnzahl.setBounds(96, 40, 49, 24);
jTfAnzahl.setText("15");
cp.add(jTfAnzahl);
jLbBereich.setBounds(160, 48, 52, 16);
jLbBereich.setText("(0..200)");
jLbBereich.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLbBereich);
jBtZufall.setBounds(224, 40, 193, 25);
jBtZufall.setText("Zahlen zufällig erzeugen");
jBtZufall.setMargin(new Insets(2, 2, 2, 2));
jBtZufall.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtZufall_ActionPerformed(evt);
}
});
cp.add(jBtZufall);
jBtBubble1.setBounds(16, 88, 89, 25);
jBtBubble1.setText("Bubble1");
jBtBubble1.setMargin(new Insets(2, 2, 2, 2));
jBtBubble1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubble1_ActionPerformed(evt);
}
});
cp.add(jBtBubble1);
jBtBubble2.setBounds(120, 88, 89, 25);
jBtBubble2.setText("Bubble2");
jBtBubble2.setMargin(new Insets(2, 2, 2, 2));
jBtBubble2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubble2_ActionPerformed(evt);
}
});
cp.add(jBtBubble2);
jBtMin.setBounds(224, 88, 89, 25);
jBtMin.setText("MinSort");
jBtMin.setMargin(new Insets(2, 2, 2, 2));
jBtMin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMin_ActionPerformed(evt);
}
});
cp.add(jBtMin);
jBtMaxS.setBounds(328, 88, 89, 25);
jBtMaxS.setText("MaxSort");
jBtMaxS.setMargin(new Insets(2, 2, 2, 2));
jBtMaxS.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMaxS_ActionPerformed(evt);
}
});
cp.add(jBtMaxS);
jBtEinS.setBounds(432, 88, 89, 25);
jBtEinS.setText("EinSort");
jBtEinS.setMargin(new Insets(2, 2, 2, 2));
jBtEinS.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtEinS_ActionPerformed(evt);
}
});
cp.add(jBtEinS);
jBtShaker1.setBounds(120, 120, 89, 25);
jBtShaker1.setText("Shaker1");
jBtShaker1.setMargin(new Insets(2, 2, 2, 2));
jBtShaker1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtShaker1_ActionPerformed(evt);
}
});
cp.add(jBtShaker1);
jBtMehr.setBounds(224, 120, 89, 25);
jBtMehr.setText("...");
jBtMehr.setMargin(new Insets(2, 2, 2, 2));
jBtMehr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtMehr_ActionPerformed(evt);
}
});
cp.add(jBtMehr);
jScrollPane1.setBounds(16, 160, 505, 185);
cp.add(jScrollPane1);
jTaAusgabe.setBounds(-2, -2, 505, 185);
jTaAusgabe.setText("Bitte zunächst Zahlen zufällig erzeugen -- danach suchen oder sortieren!\nAlle Sortierverfahren sortieren immer die anfangs/zuletzt zufällig erzeugten Zahlen, die auch \nmit [Zeigen] abgerufen und wiederhergestellt werden können. Die Suchen arbeiten \nhingegen mit den zuletzt angezeigten Zahlen (d.h. nach [Zeigen] wird in den unsortierten,\nnach einem Sortiervorgang jedoch in den sortierten Zahlen gesucht).\n\nAusführliche Erläuterungen auf http://www.r-krell.de/if-java-c.htm\n ");
jTaAusgabe.setLineWrap(false);
jScrollPane1.setViewportView(jTaAusgabe);
jTaAusgabe.setEditable(false);
jBtZeigen.setBounds(432, 40, 89, 25);
jBtZeigen.setText("Zeigen");
jBtZeigen.setMargin(new Insets(2, 2, 2, 2));
jBtZeigen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtZeigen_ActionPerformed(evt);
}
});
cp.add(jBtZeigen);
jTfGesucht.setBounds(32, 360, 73, 24);
jTfGesucht.setText("0.0");
jTfGesucht.setSelectionEnd(0);
cp.add(jTfGesucht);
jBtSeqSuche.setBounds(120, 360, 89, 25);
jBtSeqSuche.setText("Suche");
jBtSeqSuche.setMargin(new Insets(2, 2, 2, 2));
jBtSeqSuche.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtSeqSuche_ActionPerformed(evt);
}
});
cp.add(jBtSeqSuche);
jBtBinSuch.setBounds(328, 360, 89, 25);
jBtBinSuch.setText("bin. Suche");
jBtBinSuch.setMargin(new Insets(2, 2, 2, 2));
jBtBinSuch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBinSuch_ActionPerformed(evt);
}
});
cp.add(jBtBinSuch);
jBtBubbleRek.setBounds(16, 120, 89, 25);
jBtBubbleRek.setText("rek Bubble");
jBtBubbleRek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtBubbleRek_ActionPerformed(evt);
}
});
cp.add(jBtBubbleRek);
jBtQuick.setBounds(328, 120, 89, 25);
jBtQuick.setText("Quick");
jBtQuick.setMargin(new Insets(2, 2, 2, 2));
jBtQuick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtQuick_ActionPerformed(evt);
}
});
cp.add(jBtQuick);
jBtSuche1rek.setBounds(224, 360, 89, 25);
jBtSuche1rek.setText("Suche rek");
jBtSuche1rek.setMargin(new Insets(2, 2, 2, 2));
jBtSuche1rek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtSuche1rek_ActionPerformed(evt);
}
});
cp.add(jBtSuche1rek);
jBtbinSucheRek.setBounds(432, 360, 89, 25);
jBtbinSucheRek.setText("bin. S. rek");
jBtbinSucheRek.setMargin(new Insets(2, 2, 2, 2));
jBtbinSucheRek.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jBtbinSucheRek_ActionPerformed(evt);
}
});
cp.add(jBtbinSucheRek);
jLabel1.setBounds(16, 368, 17, 16);
jLabel1.setText("?");
jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel1);
jLabel2.setBounds(328, 384, 204, 16);
jLabel2.setText("[ bin. Suche nur in sort. Reihung! ]");
jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel2);
jLabel3.setBounds(24, 384, 94, 16);
jLabel3.setText("gesuchte Zahl");
jLabel3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabel3);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent evt) {
Sort_2012_Oberflaeche_WindowOpened(evt);
}
});
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Methoden
public void jBtZufall_ActionPerformed(ActionEvent evt) {
int anz = Integer.parseInt (jTfAnzahl.getText());
sortierdemo.fülleZufällig(anz);
sortierdemo.sichern();
jTaAusgabe.append("\n"+sortierdemo.zeigeAlle()+" <- zufällig erzeugt\n");
}
public void jBtZeigen_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- Kontroll-Anzeige\n");
}
public void jBtBubble1_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach BubbleSort\n");
}
public void jBtBubble2_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSort2();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach opt. BubbleSort\n");
}
public void jBtMin_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.minSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach MinSort\n");
}
public void jBtMaxS_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.maxSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach MaxSort\n");
}
public void jBtEinS_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.einSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach EinSort\n");
}
public void jBtBubbleRek_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.bubbleSortR();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach rek. BubbleSort\n");
}
public void jBtShaker1_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.shakerSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach ShakerSort\n");
}
public void jBtMehr_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
jTaAusgabe.append("Weitere Verfahren noch nicht implementiert\n");
}
public void jBtQuick_ActionPerformed(ActionEvent evt) {
sortierdemo.wiederherstellen();
sortierdemo.quickSort();
jTaAusgabe.append(sortierdemo.zeigeAlle()+" <- nach rek. QuickSort\n");
}
private String suchergebnis (int stelle, double gesucht)
{
if (stelle < 0)
{
return ("Zahl "+gesucht+" nicht gefunden\n");
}
else
{
return ("Zahl "+gesucht+" an der Stelle "+ stelle+" (d.h. in reihe["+stelle+"]) gefunden\n");
}
}
public void jBtSeqSuche_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche1(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtSuche1rek_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche1r(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtBinSuch_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche2(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void jBtbinSucheRek_ActionPerformed(ActionEvent evt) {
double gesucht = Double.parseDouble(jTfGesucht.getText());
int fundStelle = sortierdemo.suche2r(gesucht);
jTaAusgabe.append(suchergebnis(fundStelle,gesucht));
}
public void Sort_2012_Oberflaeche_WindowOpened(WindowEvent evt) {
// TODO hier Quelltext einfügen
}
// Ende Methoden
// public static void main(String[] args) {
// new Sort_2012_Oberflaeche("Sort_2012");
// }
}
-------------------------------------------------------------
public class Sort_2012_Start extends javax.swing.JApplet
// R. Krell, 16.12.12012 für www.r-krell.de bzw. www.r-krell.de/if-java-c.htm
// Startet das Programm zum Sortieren und Suchen von Kommazahlen je nach Umgebung automatisch als
// Application oder als Applet
{
public static void main (String[] s) // Start als Application
{
Sort_2012_Oberflaeche gui = new Sort_2012_Oberflaeche("Sort_2012 (www.r-krell.de) -- als Application");
}
public void init() // Start als Applet
{
Sort_2012_Oberflaeche gui = new Sort_2012_Oberflaeche("Sort_2012 (www.r-krell.de) -- als Applet");
}
}
zurück zur Seite „Informatik mit Java, Teil c)"