Finde meinen Fehler nicht! - Namen von Personen vergleichen

Status
Nicht offen für weitere Antworten.
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:


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.
 

KSG9|sebastian

Top Contributor
1. gescheiten Titel
2. such nach Comparator, Comparable im Forum, da gibts min. 1000 Posts, in denen erklärt wird wie du genau DEIN problem lösen kannst
 

L-ectron-X

Gesperrter Benutzer
@KSG9|plak: Das kannst du doch schnell als Moderator selbst erledigen. Ich mache das am Tag sicher auch so 4-5 mal.

Um der Lösung des Problems hier noch beizutragen:
KSG9|plak hat's schon angedeutet. Deine Klasse Test muss das Interface Comparable implementieren und die Methode compareTo() überschreiben. Die Klasse String hat bereits die compareTo()-Methode ausprogrammiert, so dass wir nur noch die Referenzen auf die zu vergleichenden Objekte übergeben brauchen.
Code:
public int compareTo(Object o) {
  if(o instanceof Test) {
    Test test = (Test)o;
    int i = this.getSname().compareTo(test.getSname()); //Nachnamen vergleichen
    if( i == 0) { //wenn die Nachnamen gleich sind, auch den Vornamen vergleichen
      return this.getFname().compareTo(test.getFname()); {
    else {
      return i;
    }
  }
  return 0; //Objekte sind gleich
}
Deinen Vector sortierst du dann einfach mit:
Code:
Collections.sort(vec);
 

messi

Bekanntes Mitglied
L-ectron-X hat gesagt.:
Code:
public int compareTo(Object o) {
  if(o instanceof Test) {
    (...)
  }
  return 0; //Objekte sind gleich
}
Per Definition muss Comparable.compareTo(Object) eine ClassCastException werfen, wenn mit dem übergebenen Objekt nicht verglichen werden kann. Außerdem würde ich String.CASE_INSENSITIVE_ORDER (direkt mit TreeSet) oder String.compareToIgnoreCase() verwenden, damit Namen wie "DiBona" und "Dibels" richtig sortiert werden.
 

L-ectron-X

Gesperrter Benutzer
Eine ClassCastException kann eigentlich nicht geworfen werden, denn das wird in der if-Bedingung gleich zu Beginn der Methode ausgeschlossen. Beim Rest hast du schon Recht. Das kann man machen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
V finde meinen Fehler nicht Java Basics - Anfänger-Themen 10
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
C Finde meinen Fehler nicht Java Basics - Anfänger-Themen 6
G Wie finde ich das Verzeichnis von meinen Java Projekt? Java Basics - Anfänger-Themen 7
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
S Finde den fehler nicht Java Basics - Anfänger-Themen 1
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
M Methoden Fehler und finde die Lösung nicht wirklich Java Basics - Anfänger-Themen 6
T Input/Output Leerzeilen in Ausgabe -> finde den Fehler nicht Java Basics - Anfänger-Themen 10
Z Finde den Fehler nicht ! Java Basics - Anfänger-Themen 3
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
T Wie finde ich passende Java Klassen & Methoden? Java Basics - Anfänger-Themen 4
S Compiler-Fehler Finde den Fehler nicht... Java Basics - Anfänger-Themen 4
L Methoden Finde Secquenz ineinem array Java Basics - Anfänger-Themen 12
S Compiler-Fehler error: ';' expected (finde Fehler nicht) Java Basics - Anfänger-Themen 10
O Verriegeln, aber wo? Finde den Client der zu schließem ist. Java Basics - Anfänger-Themen 0
D Code Fehlerhaft finde den Fehler nicht. Java Basics - Anfänger-Themen 1
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
R Finde den Fehler nicht Java Basics - Anfänger-Themen 4
A finde fehler nicht Java Basics - Anfänger-Themen 9
X StackOverflowError, finde den Fehler nicht Java Basics - Anfänger-Themen 5
M Methoden Fehler in Methode - Finde ihn nicht Java Basics - Anfänger-Themen 7
P Benötige Hilfe - finde Fehler nicht. Java Basics - Anfänger-Themen 3
J "ArrayIndexOutOfBoundsException", finde den Fehler schlicht nicht Java Basics - Anfänger-Themen 6
D Wo finde ich die OpenSource-Sources? Java Basics - Anfänger-Themen 5
B Finde BUG nicht... Java Basics - Anfänger-Themen 8
L StackOverFlow, finde Grund nicht! Java Basics - Anfänger-Themen 5
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
Z Problem mit Tutorial - Finde Kon.java nicht Java Basics - Anfänger-Themen 11
J Finde Fehler bei kleinem Programm nicht Java Basics - Anfänger-Themen 3
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
S Out of bounds exception. Finde den fehler nicht Java Basics - Anfänger-Themen 13
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
C ich finde den fehler nicht Java Basics - Anfänger-Themen 4
J Finde die Fehler nicht Java Basics - Anfänger-Themen 2
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
M Finde Fehler nicht: NotSerializableException Java Basics - Anfänger-Themen 2
F Finde den Fehler nicht Java Basics - Anfänger-Themen 4
J class, interface, or enum expected - finde Fehler nicht. Java Basics - Anfänger-Themen 4
E Finde Error nciht Java Basics - Anfänger-Themen 3
U Finde den fehler nicht Java Basics - Anfänger-Themen 9
J Kann den fehler nicht finde!!! Java Basics - Anfänger-Themen 7
B Calculator Fehlermeldung ich finde aber nichts? Java Basics - Anfänger-Themen 2
S Finde den Fehler nicht/ verstehe Anweisung nicht Java Basics - Anfänger-Themen 12
S Finde den Fehler nicht ! Java Basics - Anfänger-Themen 8
K class Enum Methode: values() - finde ich nicht in der API Java Basics - Anfänger-Themen 2
W Java Anfänger... Finde fehler nicht Java Basics - Anfänger-Themen 11
B Java programm mit Arrays. finde den Fehler nicht Java Basics - Anfänger-Themen 3
U Finde den fehler nicht Java Basics - Anfänger-Themen 10
U Finde den fehler nicht Java Basics - Anfänger-Themen 6
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
F Finde fehler nicht Java Basics - Anfänger-Themen 5
N finde die fehler nicht Java Basics - Anfänger-Themen 9
G Bild wird nicht neu gezeichnet - finde den Fehler nicht Java Basics - Anfänger-Themen 3
G wie finde ich workspace programmatisch? Java Basics - Anfänger-Themen 13
S Finde den Fehler nicht Java Basics - Anfänger-Themen 13
H Finde Position Java Basics - Anfänger-Themen 4
J wo finde ich javah Java Basics - Anfänger-Themen 16
B wo finde ich diese Dateien? Java Basics - Anfänger-Themen 6
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
G wie finde ich den pfad meines programms raus? Java Basics - Anfänger-Themen 2
T ArrayIndexOutOfBoundsException finde den Auslöser nicht Java Basics - Anfänger-Themen 5
O problem mit document listener finde den fehler nicht Java Basics - Anfänger-Themen 2
O arrayindexoutofbounds finde den fehler nicht Java Basics - Anfänger-Themen 6
B Finde das Problem nicht! Java Basics - Anfänger-Themen 2
M Finde den Fehler nicht Java Basics - Anfänger-Themen 3
B Finde Methode einer Klasse nicht Java Basics - Anfänger-Themen 4
N Finde Fehler nicht! Help plz! Java Basics - Anfänger-Themen 3
F Kleiner Fehler, den ich aber leider nicht finde. Java Basics - Anfänger-Themen 4
F Erste Schritte in Java - Wo finde ich Antworten? Referenzbib Java Basics - Anfänger-Themen 3
B Wo finde ich eine Übersicht aller Methoden? Java Basics - Anfänger-Themen 2
J wo finde ich die methode addactionlistener in der api ? Java Basics - Anfänger-Themen 5
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Lukasbsc Wie kann ich meinen Code optimieren? Java Basics - Anfänger-Themen 4
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
S Bewertet meinen Code - Part 1 Java Basics - Anfänger-Themen 8
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
S OOP Sachen aus meinen getMethoden ausgeben lassen `??? Java Basics - Anfänger-Themen 3
E Input/Output Konsole erkennt meinen Buchstaben nicht Java Basics - Anfänger-Themen 12
H Input/Output ImageIO.load frisst meinen ganzen Speicher weg! Java Basics - Anfänger-Themen 4
I SwingUtilities.invokeLater - Wie verwenden für meinen Code? Java Basics - Anfänger-Themen 4
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
A Wie kann ich meinen Code verbessern? Java Basics - Anfänger-Themen 17
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
S Hilfe es frisst meinen RAM! Java Basics - Anfänger-Themen 5
C Reference - wird gegen meinen Willen - auf null gesetzt Java Basics - Anfänger-Themen 2
J problem (kann meinen Code nicht kompilieren) Java Basics - Anfänger-Themen 3
C wie bekomm ich ein animiertes .gif bild in meinen JPanel Java Basics - Anfänger-Themen 2
J Wie installiere ich die api index.html in meinen java editor Java Basics - Anfänger-Themen 4
B bitte mal meinen adressbuch-code checken Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben