also ich wollte ein programm machen, das eine person in einen vector einfügt und dann nach dem alphabet ordnet, nur ordnet er das nicht nach dem alphabet hier erstmal der code:
die Klasse Test: hier wird meine "Person" erstellt:
die Klasse TestVerwaltung: hier wird in den Vector vec eingefügt, und geordnet(was aber nicht funktioniert).
die klasse TestView in gekürzter Fassung:
ich bin drauf gekommen das er in der Klasse TestVerwaltung nicht in die while schleife: while(e.hasMoreElements) geht. ich verstehe aber nicht warum. das eigenartige ist auch das, die if abfrage if(vec.isEmpty()) immer true ist was heißen müsste das er die "Person" nicht einfügt. an dieser stelle bin ich auch mit meinem latein am ende.
ich hoffe ihr könnt mir helfen?
L-ectron-X hat den Titel angepasst.
die Klasse Test: hier wird meine "Person" erstellt:
Code:
/*
* Test.java
*
* Created on 12. August 2005, 17:17
*/
package Bsp_41_test;
/**
*
* @author michi
*/
public class Test {
private String fname;
private String sname;
/** Creates a new instance of Test */
public Test(String fname, String sname)
{
this.fname = fname;
this.sname = sname;
}
public String getFname()
{
return fname;
}
public String getSname()
{
return sname;
}
}
die Klasse TestVerwaltung: hier wird in den Vector vec eingefügt, und geordnet(was aber nicht funktioniert).
Code:
/*
* TestVerwaltung.java
*
* Created on 12. August 2005, 17:20
*/
package Bsp_41_test;
import java.util.*;
/**
*
* @author michi
*/
public class TestVerwaltung {
Vector vec = new Vector();
/** Creates a new instance of TestVerwaltung */
public TestVerwaltung() {
}
public void add(Test ntest)
{
boolean eingefügt = false;
String sname = ntest.getSname();
Enumeration e = vec.elements();
if(vec.isEmpty())
{
vec.addElement(ntest);
return;
}
else
{
while(e.hasMoreElements())
{
Test test = (Test)e.nextElement();
String namefromvector = test.getSname();
if(sname.compareTo(namefromvector) < 0)
{
vec.insertElementAt(ntest, vec.indexOf(test));
eingefügt = true;
return;
}
}
if(!eingefügt)
vec.addElement(ntest);
}
}
public String getAusgabe()
{
String ausgabe = "";
Enumeration e = vec.elements();
while(e.hasMoreElements())
{
Test next = (Test)e.nextElement();
ausgabe = next.getFname() + " " + next.getSname() + "\n";
}
return ausgabe;
}
}
die klasse TestView in gekürzter Fassung:
Code:
/*
* TestView.java
*
* Created on 12. August 2005, 17:11
*/
package Bsp_41_test;
import javax.swing.*;
/**
*
* @author michi
*/
public class TestView extends javax.swing.JFrame {
TestVerwaltung test = new TestVerwaltung();
private DefaultListModel dlm = new DefaultListModel();
/** Creates new form TestView */
public TestView() {
initComponents();
jList1.setModel(dlm);
}
...........
private void onEinfügen(java.awt.event.ActionEvent evt) {
String fname = tfFname.getText();
String sname = tfSname.getText();
test.add(new Test(fname, sname));
String ausgabe = test.getAusgabe();
dlm.addElement(ausgabe);
}
.........
ich bin drauf gekommen das er in der Klasse TestVerwaltung nicht in die while schleife: while(e.hasMoreElements) geht. ich verstehe aber nicht warum. das eigenartige ist auch das, die if abfrage if(vec.isEmpty()) immer true ist was heißen müsste das er die "Person" nicht einfügt. an dieser stelle bin ich auch mit meinem latein am ende.
ich hoffe ihr könnt mir helfen?
L-ectron-X hat den Titel angepasst.