我正在尝试编写回文。它具有用户输入字符串,程序将告诉它是否是回文。我已经在网上搜索了代码,但似乎当我创建另一个方法时,以及在编译时,编译器会说“ Nullpointerexception”。自昨天以来,我一直在尝试此方法,但似乎我不太了解。我的ICT课程需要它。谢谢。这是我的代码。

import java.util.Scanner;

public class Palindrome {
   String word, reverse="";
   public static void main(String args[]){
       String word;
       Scanner in = new Scanner(System.in);
       System.out.println("Enter a string to check if it is a palindrome");
       word = in.nextLine();
       Palindrome check = new Palindrome();
       check.palindromeChecker();
   }

   public String palindromeChecker(){
      int length = word.length();

      for ( int i = length - 1 ; i >= 0 ; i-- )
         reverse = reverse + word.charAt(i);

      if (word.equals(reverse))
         return "Palindrome";
      else
         return "Not a Palindrome";
   }
}

最佳答案

静态main方法中的变量“ word”隐藏Palindrome类的实例变量“ word”。
因此,您正在将Scanner中的值分配给错误的变量。

要解决此错误,您有几种选择:

最简单的方法是在主方法中删除变量,并将类Palindrome的实例变量重新声明为静态。但是,这不是很优雅(并且不是面向对象的)。
最好将您读取的值作为参数传递给方法palindromeChecker

当然,还有很多其他方法可以做到这一点,但是我相信一旦您对这种语言和编程有了更深入的了解,您就会学到更多的方法。

10-05 19:14