次のJavaプログラムで回文をチェックすることに関して、なぜこのクラスを定義するにあたってprivate String pal;
を含める必要があるのか分かりません。これは設計上の問題ですか?このコード行を削除すると問題が発生しますか?Javaクラス定義の設計上の問題
public class Palindrome {
private String pal;
public Palindrome(String initPal) {
pal = initPal.toUpperCase();
}
public boolean isPalindrome() {
if (pal.length() <= 1) {
return true;
}
char first = pal.charAt(0);
char last = pal.charAt(pal.length()-1);
if (Character.isLetter(first) && Character.isLetter(last)) {
if (first != last) {
return false;
}
else {
Palindrome sub = new Palindrome(pal.substring(1,pal.length()-1));
return sub.isPalindrome();
}
}
else if (!Character.isLetter(first)) {
Palindrome sub = new Palindrome(pal.substring(1));
return sub.isPalindrome();
}
else {
Palindrome sub = new Palindrome(pal.substring(0,pal.length()-1));
return sub.isPalindrome();
}
}
public static void main(String[] args) {
Palindrome p1 = new Palindrome("abcdcba.");
System.out.println(p1.isPalindrome());
}
}
あなたのクラスには文字列属性が必要なため、呼び出し側は解析する文字列を設定し、それが回文か否かを確認します。適切な字下げは、クラスの内容を視覚化するのに役立ちます – Alfabravo
それを削除するとどうなりますか:-)単に試してみてください – kleopatra