Ich versuche, ein Programm zu machen, um die Anzahl der Zeichen des längsten Palindrom innerhalb eines Wortes zu finden. Was das Programm tut, ist, alle verschiedenen Teilzeichenfolgen der gegebenen Zeichenkette zu finden und sollte prüfen, ob es ein Palindrom ist und dann die Anzahl der Zeichen, die es hat.Einen String-Index erhalten Außerhalb des Bereichs Fehler
Gerade jetzt ist es richtig, alle möglichen Teil finden und funktioniert, wenn ich eine tatsächliche Palindrom wie hannah
eingeben, aber wenn ich Eingang etwas wie banana
, bekomme ich folgende Fehler StringIndexOutOfBoundsException
.
Hier ist mein Code:
import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word;
String reverseWord;
int palindromeLength = 0;
System.out.print("Enter A Word: ");
word = sc.nextLine();
reverseWord = new StringBuffer(word).reverse().toString();
if (reverseWord.equals(word))
palindromeLength = word.length();
else {
for(int i = 0; i < word.length(); i++) {
for(int j = 1; j <= word.length() - j; j++) {
String substring = word.substring(i, i + j);
String reverseSubstring = new StringBuffer(substring).reverse().toString();
if (reverseSubstring.equals(substring)) {
if (substring.length() > palindromeLength) {
palindromeLength = substring.length();
}
}
}
}
}
System.out.println(palindromeLength);
}
}
Wer weiß, warum dies geschieht und wie ich das Problem beheben könnte?
Danke!
'length()' wird die Gesamtzahl der Zeichen in der Zeichenfolge zurück. Sie wollen 'length() - 1 'verwenden, wenn die Schleife ab Index 0 beginnt. – DigitalNinja
für (int j = 1; <= sollte das nicht j = i sein? – onnoweb
@DigitalNinja Immer noch der Fehler – user7455531