내 프로그램에서 - 2 클래스가 있고 PalindromeTester는 Palindrome에서 findPalindrome 메서드를 참조해야합니다. 그러나, 일어나는 일은 findPalindrome 메서드에 전달 된 값이 레벨이나 엄마 또는 아빠 또는 부인과 같은 문자열을 테스트 할 때에도 항상 입력 된 문자열이 회문이 아님을 반환한다는 것입니다.Palindrome 방법 및 비교
일부 개선 사항을 제안 할 수 있습니까? 나는 문자열 찾기를 제대로하지 않는 findPalindrome 메서드를 사용한다고 생각합니다. 나는 그것의 방법을 생각하지만, 누군가 다른 사람이 자유롭게 제안한다고 생각한다면. 마지막 문자를 두 번째로 가져 와서 다시 작성한 다음 원본 문자열과 비교합니다.
import java.util.Scanner;//import scanner class
public class PalindromeTester//class
{
public static void main(String args[])//main method
{
Scanner in = new Scanner(System.in); //scanner object
String palindrome = new String(); //string to accept user input
String end = new String("q"); //string to determine user quitting
for (int a = 0; a >= 0; a++){ //enter loop
System.out.println();
System.out.println("Enter a string to check if it is a palindrome"); //ask for initial string
System.out.println();
System.out.println("Continue entering strings until you are done. When you are done, enter q to quit."); //remind user to enter q to quit
palindrome = in.nextLine();//take in string input
Palindrome original = new Palindrome(palindrome); //palindrome object and passed palindrome to the constructor...but no value yet...so?
original = original.findPalindrome(); //call findPalindrome to determine if palindrome is a palindrome
if (palindrome.equalsIgnoreCase(end)) //if palindrome is q and since end is q and if they are equal, a=-2.
a = -2; //when incrementing the max value if ++ will be -1. since -1 is not >= to 0 then for loop exits.
System.out.println("Thanks for trying this program");
}
}
}
_____________________________________________________________
public class Palindrome {
String myPalindrome;
String myReverse;
public Palindrome(){
myPalindrome = new String("");
myReverse = new String("");
}
public Palindrome(String palindrome){
myPalindrome = palindrome;
}
public String findPalindrome(){
int length = myPalindrome.length();
for (int i = length - 1 ; i >= 0 ; i--)
myReverse = myReverse + myPalindrome.charAt(i);
if (myPalindrome.equals(myReverse))
System.out.println("Entered string is a palindrome.");
else
System.out.println("Entered string is not a palindrome.");
return ("");
}
}
디버깅을 시도 했습니까? – BobTheBuilder
Palindrome의 한 종류 인 변수 원본을 확인하십시오. findPalindrome() 메서드가 (original.findPalindrome())을 호출하면 String 유형을 반환합니다. 다음과 같은 작업을 수행 할 수 없습니다. original = original.findPalindrome(); – MouseLearnJava
이 코드는 처음부터 컴파일됩니까? – RishikeshDhokare