Benutzerdefinierte Suche in einem String - outofbounds

M

marvpaul

Mitglied
Hallo Leute,
ich bin grad am basteln für eine Aufgabe. Ich lese als erstes aus zwei Textdateien jeweils einen String ein. alicekettef (20 Zeichen ohne Leerzeichen) ist der String, in dem eine Zeichenfolge enthalten ist, die möglichst ohne andere Unterbrechungen (Zeichen) in bobkettef (1024 Zeichen) wiedergefunden werden soll. Es werden eine bestimmte Anzahl an Zeichen toleriert, die sich zwischen der gesuchten Zeichenkette befinden. Ein kleines Beispiel:
Ich toleriere einen Fehler
Ich habe einen String: "hallo", denn ich in diesem String suche: "halolo"
Das o zwischen den beiden l's würde dann hier als ein falsches Zeichen gelten und sollte entsprechend meiner Methode als gefundene "Übereinstimmung" ausgegeben werden.
Es gibt also zwei Fälle: wenn das Zeichen aus alicekettef gleich bobkettef ist, dann sucht man einfach weiter, wenn nicht wird geschaut ob die Anzahl der falschen Zeichen (zaehlerfalsche) größer maxfalschekettenglieder ist. Wenn dies der Fall ist, dann kann an dieser Stelle der Teilstring nicht in Frage kommen und man sucht weiter im bobkettef(Dafür ist die for-Schleife da), beginnt aber bei alicekettef wieder am Anfang der Zeichenkette. Andernfalls wird die Suche weiter fortgesetzt.
Ich bekomme nun einen Fehler: "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 20
at java.lang.String.charAt(String.java:686)
at Halskette.aufgabe2(Halskette.java:51)
at Halskette.main(Halskette.java:13)"

Die Methode Aufgabe2 sieht wie folgt aus:
Java:
static void aufgabe2(){
		int richtige = 0; 
		int suchealice = 0;
		for(int feldsuche = 0; feldsuche <= (bobkettef.length() - alicekettef.length()-1); feldsuche++){ //Durchsucht komplett bobkettef
			if((alicekettef.charAt(suchealice) == bobkettef.charAt(feldsuche)) && (maxfalschekettenglieder >= zaehlerfalsche) && (alicekettef.length() > (suchealice - maxfalschekettenglieder))){
				richtige++;// Weitersuchen weil Übereinstimmung und Kette nicht zu lang
				suchealice++; //Suchindex in der alicekettef um eins erhöhen
			}
			else if((maxfalschekettenglieder >= zaehlerfalsche) && (alicekettef.length() >= (suchealice - maxfalschekettenglieder-1))){
				zaehlerfalsche++;//Keine Übereinstimmung aber Möglichkeit eines Fehlers
				suchealice ++; //Suchindex in der alicekettef um eins erhöhen
			}
			else{
				if(richtige == (alicekettef.length()-1)){
					System.out.println((feldsuche - richtige - zaehlerfalsche));
				}
				suchealice = 0; //Wieder zum Anfang der gegebenen Kette springen 
				feldsuche = (feldsuche -zaehlerfalsche - richtige); //Suche forsetzen
				richtige = 0;
				zaehlerfalsche = 0;		
			}
		}
	}

Die beiden Strings sind richtig eingelesen worden und als Public schon vorher in der Klasse deklariert, gleiches gilt für maxfalschekettenglieder (Diese Zahl soll der Benutzer nachher selbst festlegen, um eine Auswahl über die möglichen falschen Glieder im String zu treffen).


Kann mir jemand sagen warum die Methode jetzt ein outofbounds wirft? Ich verstehe das echt nicht. Eigentliche setze ich ja suchealice wieder zurück wenn es entsprechend viele falsche Glieder im String gibt.
 
VfL_Freak

VfL_Freak

Top Contributor
Moin,

die Stelle, an der der Fehler auftritt, steht doch da:
at Halskette.aufgabe2(Halskette.java:51)

Nur hast Du diesen Codeteil leider nicht gepostet .....

Gruß
Klaus
 
M

marvpaul

Mitglied
Doch die Codezeile ist diese hier: if((alicekettef.charAt(suchealice) == bobkettef.charAt(feldsuche)) && (maxfalschekettenglieder >= zaehlerfalsche) && (alicekettef.length() > (suchealice - maxfalschekettenglieder)))

Hab nur die eine Methode aus dem Programm ausgeschnitten.
Irgendwann scheint er hier über den Index von 20 des Strings alicekettef hinaus zu gehen. Ich verstehe aber (wie schon oben erwähnt) nicht WARUM >.< Denn ich setzte ja eigentlich den Index (suchealice) wieder zurück
 
VfL_Freak

VfL_Freak

Top Contributor
Moin,

ok, dann sollten Du demnächst aber bitte auch die korrekten Zeilennummern posten !!

Dein Problem liegt in der FOR-Schleife:
for( ... feldsuche <= bobkettef.length()

Nicht '<=' sondern nur '<', sonst läuft Du im Index halt zu weit, da Länge von 0 bis Länge-1 !!

Gruß
Klaus
 
Zuletzt bearbeitet:
FetterOtter

FetterOtter

Bekanntes Mitglied
Irgendwie fängst du nicht ab, ob du das letzte Zeichen von "alicekettef" erreicht hast.
Jedenfalls gehst du in Zeile 5 deines geposteten Codes baden:
Java:
if((alicekettef.charAt(suchealice)...
In "suchealice" steht irgendwann "20", der Index darf aber nur von "0" bis "19" gehen.
 
VfL_Freak

VfL_Freak

Top Contributor
deswegen ja '<' statt '<=' !!
Ist ein Durchlauf weniger und der Index geht nur bis 19 !!

Gruß
Klaus
 
FetterOtter

FetterOtter

Bekanntes Mitglied
Sorry, ich dachte, der Zähler "feldsuche" sollte der Startindex für die Suche in "bobkettef" sein. Und der wird bei 1024-20-1 erheblich länger als 20.
Aber dann hab ich's wohl falsch verstanden, tschuldigung für's Einmischen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Benutzerdefinierte Anwendung starten Java Basics - Anfänger-Themen 5
Y Suche von Studenten anhand Ihrer Eigenschaften. Java Basics - Anfänger-Themen 1
F Auf der Suche in π Java Basics - Anfänger-Themen 13
C Suche Nachhilfe in Java Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A suche dringend Hilfe!! Java Basics - Anfänger-Themen 6
N Operatoren Schreibtischtest der Reihen-Suche nach Aufschluss in die Basics Java Basics - Anfänger-Themen 1
B Suche free SVN Hosting Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
S Java Lineare-Suche Zeitmessung Java Basics - Anfänger-Themen 5
S Java Lineare Suche Java Basics - Anfänger-Themen 1
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
E Die richtige Suche in der API Java Basics - Anfänger-Themen 1
S suche nach varible POSITION ... fuer das pixel-maennchen Java Basics - Anfänger-Themen 4
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
B Suche Programme mit Fehlern Java Basics - Anfänger-Themen 9
jaleda100 Component für Suche Java Basics - Anfänger-Themen 4
L Suche ein sampel Projekt Java Basics - Anfänger-Themen 2
P Suche Aufwandsgenerator (o-notation) Java Basics - Anfänger-Themen 1
S Suche aktuelles 2D Grafik Tutorial Java Basics - Anfänger-Themen 5
M Suche hilfe bei Array Java Basics - Anfänger-Themen 4
L Binäre Suche mit Comparator Java Basics - Anfänger-Themen 5
J Methoden Suche effiziente Implementierung für eine Methode Java Basics - Anfänger-Themen 3
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
D Erste Schritte Suche Quelltext Java Basics - Anfänger-Themen 7
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12
J Suche Hilfestellung Java Basics - Anfänger-Themen 10
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
J Suche die Emailadresse Java Basics - Anfänger-Themen 6
H Suche in Text und Markierung Java Basics - Anfänger-Themen 14
H Suche in einem Text Java Basics - Anfänger-Themen 17
H Erste Schritte Binäre Suche Java Basics - Anfänger-Themen 37
J Suche simples Beispiel für die EOFException Java Basics - Anfänger-Themen 1
H Rekursion Binäre Suche Java Basics - Anfänger-Themen 2
L Binäre Suche Java Basics - Anfänger-Themen 2
L Linerae Suche in einem sortierten Array Java Basics - Anfänger-Themen 2
N Array, lineare Suche, binäre Suche, Programm bleibt unerwartet stehen... Java Basics - Anfänger-Themen 6
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
L Einfache Lineare Suche Java Basics - Anfänger-Themen 7
J Binäre Suche eines Array Java Basics - Anfänger-Themen 5
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
X Best Practice SUCHE ein gutes Javabuch! (kein Anfang von 0) Java Basics - Anfänger-Themen 5
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
S Suche richtigen Typ für Variabel mit den Werten (neu, gebraucht, beschädigt) Java Basics - Anfänger-Themen 7
M Best Practice Programmierstil Graphen-A*-Suche Java Basics - Anfänger-Themen 5
M Suche Hilfe bei sehr kleinen Quelltexten Java Basics - Anfänger-Themen 2
E Suche Klasse die eine Bedinung prüft und einen von zwei Auswahlwerten zurückgibt... Java Basics - Anfänger-Themen 6
D Erste Schritte suche hilfe für db-anbindung Java Basics - Anfänger-Themen 36
S Java Servlet - Suche Java Basics - Anfänger-Themen 1
P Hashing suche Java Basics - Anfänger-Themen 4
K Suche Hilfe bei einfachem Java Code ( Debuggen ) Java Basics - Anfänger-Themen 1
J Variablen Auf der suche nach einem Befehl Java Basics - Anfänger-Themen 2
M Binäre Suche Fehler überall =( Java Basics - Anfänger-Themen 2
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Binärbaum Suche Java Basics - Anfänger-Themen 5
U Vererbung Suche Hilfe anhand eines Bsp. Java Basics - Anfänger-Themen 1
L Suche Programmier-Projekt mit Anleitung Java Basics - Anfänger-Themen 3
A Suche Programmierer für Android App Java Basics - Anfänger-Themen 1
H Suche Vergleichstabelle für die Klassen String und StringBuilder Java Basics - Anfänger-Themen 1
X [SUCHE]Mitentwickler Java Basics - Anfänger-Themen 10
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
D Binare Suche Java Basics - Anfänger-Themen 1
C Erste Schritte Bereich angeben bzw Fehler Suche Java Basics - Anfänger-Themen 6
L Suche in dreidimensionalen Arrays Java Basics - Anfänger-Themen 3
P Lineare Suche im Array Java Basics - Anfänger-Themen 5
X verschachtelte suche Java Basics - Anfänger-Themen 8
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
S Erste Schritte Suche nach einem guten JAVA-Buch (Definition im Thread) Java Basics - Anfänger-Themen 6
G suche den Begriff & wie programmiere ich sowas (ich ändere den Titel dann) Java Basics - Anfänger-Themen 2
M suche/brauche Links über rein GUI Beispielprogramme Java Basics - Anfänger-Themen 4
I Suche Component welches Map ähnelt Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
G Erste Schritte Suche nach Zeichenkette Java Basics - Anfänger-Themen 26
steffomio Suche brauchbares I18N Lib Java Basics - Anfänger-Themen 4
J Suche Tipps zum erstellen von Algorithmen Java Basics - Anfänger-Themen 5
D Artikel-Suche implementieren Java Basics - Anfänger-Themen 7
S suche nach eclipse plug-in Java Basics - Anfänger-Themen 3
W Compiler-Fehler Binäre Suche Java Basics - Anfänger-Themen 2
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
K Suche geeignete Code-Beispiele Java Basics - Anfänger-Themen 4
P Suche Java Programme mit gutem/anfängertauglichem Quellcode Java Basics - Anfänger-Themen 8
I Suche Compiler in Java SDK Java Basics - Anfänger-Themen 5
R String in Strig Suche Java Basics - Anfänger-Themen 2
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3
B Lineare Suche Java Basics - Anfänger-Themen 5
S Multi-Threaded Binäre Suche Java Basics - Anfänger-Themen 29
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
L suche geo.google* Java Basics - Anfänger-Themen 20
B SUCHE: Threadsafe LinkedList Java Basics - Anfänger-Themen 10
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
F suche Elemente in HashSet Java Basics - Anfänger-Themen 5
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
S Suche nach einem Programm Java Basics - Anfänger-Themen 7
A Suche Java Tutorial (open e-book ö.ä.) Java Basics - Anfänger-Themen 3
S Suche Methode zum ausdrucken eines Strings Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Anzeige

Neue Themen


Oben