java - 如何检查字符串是否为回文?

标签 java variables scope palindrome

我正在尝试编码回文。它有一个用户输入的字符串,程序会判断它是否是回文。我在网上搜索了代码,但似乎当我创建了另一个方法时,编译器在编译时说“Nullpointerexception”。我从昨天开始尝试这个,但似乎我无法真正理解它。我的 ICT 类(class)需要它。谢谢。这是我的代码。

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 的值分配给了错误的变量。

要修复此错误,您有多种选择:

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

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

关于java - 如何检查字符串是否为回文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18231809/

相关文章:

Java - 两个接口(interface)中的双重定义

java - Junit + Netbeans : Doesn't find methods inside class for test

JAVA 绑定(bind) XML 来更新 GUI,反之亦然

java - Log4j什么也不写

ruby-on-rails - 不明确的列名 : error not working with tags

bash - 无法访问bash括号内的变量

Excel公式中的单元格地址

variables - TCL命名空间中的变量

python - 在经常调用的函数中编译正则表达式

c++ - gdb 函数从本地范围调用 std::vector 导致错误