入力された単語が回文であるかどうかをテストしようとしています(同じスペルが前後にあります)。私が見る限り、それは機能するはずですが、Eclipseは「ローカル変数isPalindromeの値は使用されていません」と言っていますが、使用されています。問題は、その単語が回文でなくても、回文であると言っていることです。
import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
String phrase;
char[] phraseLetters;
int endChar;
boolean isPalindrome;
Scanner input = new Scanner(System.in);
System.out.println("Enter a word or phrase.");
phrase = input.nextLine();
input.close();
phrase = phrase.toLowerCase();
phrase = phrase.replaceAll(" ","");
phraseLetters = phrase.toCharArray();
endChar = phraseLetters.length - 1;
for (int i = 0; i < phraseLetters.length; i++) {
if (phraseLetters[i] != phraseLetters[endChar]) {
isPalindrome = false;
} else {
isPalindrome = true;
endChar -= 1;
}
}
if (isPalindrome = true) {
System.out.println("This word or phrase entered is a palindrome.");
} else {
System.out.println("This word or phrase is not a palindrome.");
}
}
}
編集:私はifステートメントが
if (isPalindrome == true)
と
if (isPalindrome)
どちらの場合も、Eclipseは、このif条件で、「ローカル変数isPalindromeが初期化されていない可能性があります」と表示します。
最終編集:
それ以来、私は先に進み、このコードを書き直しましたが、誰かがまだこれを見ている場合は、元のコードに戻って修正しました。
コードの先頭でisPalindromeを初期化しました。
Boolean isPalinddrome = True;
forループ条件を次のように変更しました。
for (int i = 0; (i < phraseLetters.length) && (isPalindrome); i++)
最後に私はに変更if (isPalindrome = true)
しましたif (isPalindrome)