Suchmaschine einer Datenbank

jonasvi

Mitglied
Guten Abend Community,

ich habe eine Datenbank vorliegen und möchte eine Suchmaschine bauen. Das einzige Problem, was jetzt aufgetreten ist: suche ich nach Nachnamen mit "Sch" werden alle richtigen Ergebnisse - wie z.B. Schmidt, Schwarz,... - angezeigt. Sobald ich aber nach 4 Strings suche, wie z.B. "Schm", erscheint die Fehlermeldung:
java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(Unknown Source)

Hier der Code-Abschnitt:
Code:
String nn = ein_nachname.getText().toLowerCase();
                    String vn = ein_vorname.getText().toLowerCase();
                    String id = ein_id.getText().toLowerCase();
                    Object plz = ein_plz.getSelectedItem();
                    int laengeNN = nn.length();
                    int laengeVN = vn.length();
                    int laengeID = id.length();
                   

                    for (int i = 1; i < sheet.getRows(); i++) {

                        boolean isNN = nn.isEmpty() || nn.equals(sheet.getCell(1, i).getContents().toLowerCase().substring(0,laengeNN));
                        boolean isVN = vn.isEmpty() || vn.equals(sheet.getCell(2, i).getContents().toLowerCase().substring(0,laengeVN));
                        boolean isID = id.isEmpty() || id.equals(sheet.getCell(0, i).getContents().toLowerCase().substring(0,laengeID));
                        boolean isPLZ = plz.equals("") || plz.equals(sheet.getCell(4, i).getContents().toLowerCase());
                        boolean isValidCell = isNN && isVN && isID && isPLZ;

Was ich echt merkwürdig finde ist z.B.: Wenn ich nach "Kla" suche, kommen mehrere mit den Namen Klaus und einer mit Klaus-Peter. Sobald ich nach "Klau" suche, kommt die selbe Fehlermeldung wie oben. 😕

Ich bin dankbar für jeden Rat.


Mit freundlichen Grüßen
jonasvi
 
Ins Blaue geraten: Es gibt Namen mit 3 Buchstaben, von diesen lässt du dir den 4. Buchstaben geben, den es logischerweise nicht gibt.
 

Neue Themen


Zurück
Oben