Suche, wenn-String unterscheidet sich von einem Zeichen
Ich bin versucht zu bestimmen, wenn ein Wort eingegeben wird, unterscheidet sich von einem Zeichen in einer text-Datei. Ich habe code, der funktioniert, aber leider nur für Wörter, die zwei Zeichen oder weniger, die offensichtlich nicht sehr nützlich, und der code selbst sieht ein bisschen chaotisch. Hier ist, was ich habe, so weit:
if(random.length() == word.length()){
for(int i = 0; i < random.length(); i++){
if( (word.charAt(i) == random.charAt(i))){
str += word+"\n";
count++;
}
}
}
Mit random
wird das Wort, das durch den Benutzer eingegeben werden, und word
wird das Wort zu suchen, in der text-Datei.
Wenn ich änderte meine zweite if
- Anweisung, um etwas entlang der Linien von
if( (word.charAt(i) == random.charAt(i)) && (word.charAt(i -1) == random.charAt(i-1)))
und wenn ich int i
werden = 1 statt, ich scheine zu bekommen, mehr von dem, was ich bin auf der Suche zu erreichen, aber dann ist mein code sucht nur, wenn die ersten beiden Buchstaben sind die gleichen, und nicht, wenn die letzten beiden sind so gut, die sollte es tun.
- Also, was genau Fragen Sie?
- Ein Wort gegeben, die von einem Benutzer, in diesem Fall
random
ich bin versucht, suchen eine text-Datei, die eine große Menge von Wörtern und zu sehen, ob die Worte in diesem text-Datei unterscheiden sich durch nur ein Zeichen vonrandom
. Zum Beispiel; der Tag ist ähnlich wie Wörter : sagen, ray, dam, dab etc... - Was meinst du mit
one changed character
? Eine deletion, eine insertion oder nur Bearbeiten? - nur ein Charakter bearbeitet.
Word
würde immer noch die gleiche Länge wierandom
so dass keine deletion oder insertion, aber es könnte sich von jedem singulären Charakter Wert. - Ich mag diese Linie
str += word+"\n";
. Es sieht so nützlich, wenn der String inword
so oft wie der seine Länge kombiniert in einem einzigen String.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie brauchen eine Funktion wie diese? Ich habe geschrieben und es getestet.
int mistakesAllowed
?if(equals(word, random, 1) == true) str += word+"\n";
static
Methode.static
Methoden können nicht auf Variablen außerhalb der Methode, zum Beispiel Ihrestr
. Versuchen Sie nicht, zu ändernstr
innerhalb der Methode, aber in deinemmain()
wie ich geschrieben in meinemif()
oben. Oder Sie können entfernen Sie diestatic
und dann können Sie den Zugriff auf diestr
direkt. Hoffe, das hilft!Dein code scheint zu funktionieren für mich, Sie kann nur interpretieren Ihre Ergebnisse falsch.
Kann dies deutlicher werden:
Wenn Sie möchten, um zu überprüfen, Strings mit unterschiedlichen Längen, die Sie benötigen, um Zeichen zu löschen von der länger, bis es die gleiche Größe wie die kürzere.
Zum Beispiel:
Wenn String1 = "abc";
und String2 = "zzzabcdef";
Müssen Sie die 6 Zeichen aus dem zweiten string und test für jede Kombination von 6 Zeichen gelöscht. So würden Sie wollen, um zu testen, die strings: def, cde, abc, zab, den, zzz, zzb, zzc, zzd, zze, zzf, zaf, zae, zad, zac, zab, den, zzf, zze, ..., ..., auf und auf, der Liste ist der Größe 9 wählen Sie 6, also ist es definitiv eine nicht optimale bzw. empfohlen.
Können Sie jedoch überprüfen, um zu sehen, ob eine Zeichenfolge, die ein Zeichen länger als die anderen ist nur die andere Zeichenfolge mit einem zusätzlichen Buchstaben. Um dies zu tun, Sie wollen eine for-Schleife zu packen, zwei substring von 0 bis i, und von i+1 bis zum Ende. Dieser wird aus der I-TEN Zeichen, und die Schleife für die Größe der Zeichenfolge - 1, geben Sie zuerst die ausgeschriebene Bezeichnung, dann wird die Zeichenkette ohne den ersten Buchstaben, dann fehlen die zweiten Buchstaben, und so weiter. Dann testen Sie, dass die Zeichenfolge in der gleichen Weise, die wir haben werden.
Kommentar, wenn dies nicht das war, was du bist suchen für.
BEARBEITEN
Zu sehen, wie viele Wörter in einer Datei einen Buchstaben anders als ein word-variable, müssen Sie eine Schleife durch die Datei, immer jedes Wort. Dann testen, wenn das der string war ein Brief aus. Es wäre so etwas wie dieses:
HTML:
count==0
, und drucken Sie Sie gefunden, der erste Unterschied, das macht nicht wirklich Sinn für mich.