現在、Javaで大文字と小文字を区別しないpalindromeチェッカーを作成しようとしています。 他のトピックを確認しましたが、いずれも問題を解決していないようです。Java palindrome checker - 大文字と小文字を区別しない
は、ここに私のコードです:
import java.util.Scanner;
public class Homework5_2 {
public static void main(String[] args) {
boolean flag = true; //palindrome or not
Scanner console = new Scanner(System.in);
System.out.print("Enter one or more words: ");
String s = console.next();
//checks if string contains spaces
if (s.matches(".*\\s+.*")) {
s = s.replaceAll("\\s+","");
}
s = s.toLowerCase();
int stringLength = s.length();
int index = 0;
//checks the string from both sides going towards the middle
for (int i=0;i<stringLength/2;i++) {
index = stringLength-i-1;
if (!(s.charAt(i) == s.charAt(index))) {
flag = false;
}
}
if (flag == true) {
System.out.println("The string is a palindrome!");
} else {
System.out.println("The string is not a palindrome!");
}
}
}
文字列が回文として報告されていないとして、「OS SO」、間違った出力のような文字列を入力します。 この問題は、空白がない場合、同じ文字列が正しく回文として報告されるため、スペースに関連しているようです。 私は本当にこのコードの脆弱性を理解することに興味があり、どんな助けも非常に高く評価されるでしょう!