java - 回文法及比较

标签 java methods comparison palindrome

在我下面的程序中 - 我有 2 个类,PalindromeTester 应该引用 Palindrome 中的 findPalindrome 方法。然而,发生的情况是,传递给 findPalindrome 方法的值始终返回输入的字符串不是回文,即使当我测试诸如 level 或 mom 或 badd 或 madam 之类的字符串时也是如此。

有人可以提出改进建议吗?我很确定我认为我的 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 (""); 
      }


    }

最佳答案

调用字符串构造函数时,您的代码无法初始化 myReverse。因此它被初始化为 null,然后附加回文字符串。你需要修复它。 话虽如此,上面的代码甚至无法编译,并且存在许多基本问题。

关于java - 回文法及比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19628595/

相关文章:

java - 在Java中逐字符创建字符串

java - 如何在 IntelliJ IDEA 中自动创建方法时粘贴自定义代码?

ruby-on-rails - 通过按钮调用 Ruby 方法

C# 如何处理可空类型

java - 为什么我在这里得到一个找不到文件的异常?

java - NSCoding 到 java

java - 以编程方式设置 log4j 过滤器

java - 在java中使用vtd-xml获取xml中的属性文本

python - django模板中显示自己的方法

java - 为什么使用 == 比较枚举会导致 PMD 警告?