格式问题 JAVA

Formatting Issue JAVA

我必须用两种方法创建一个代码,要求用户输入一个数字,程序应该告诉它是否是回文。

我的代码如下:

public static void main (String[] args)  
   {
      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a value: ");
      int value = scan.nextInt();

      int inversedNumber = reverse(value);
      System.out.println("Is value " +value+ " a palindrome?: " +isPalidrome(value));
   }
   public static int reverse(int number)
   {
      int reverse = 0;
      while( number != 0 )
      {
         reverse = reverse * 10;
         reverse = reverse + number%10;
         number = number/10;
      }
      return reverse;
   }

   public static boolean isPalidrome(int number)
   {
      boolean palidrome;
      if(inversedNumber == number)
         palidrome = true;
      else
         palidrome = false;

      return palidrome;
   }
}

但每次我 运行 它时,我总是收到一个错误,告诉我无法找到方法 isPalidrome 中的 inversedNumber。但是已经在main方法中初始化了。它不应该在 main 方法中寻找初始化吗?或者我的格式 and/or 逻辑有问题。

inversedNumbermain() 中声明,在方法 isPalidrome() 中无法识别,因为它不在同一个 scope.

您可以按如下方式将其传递给方法:

通话:isPalidrome(value, inversedNumber)

并将方法的签名更改为:

public static boolean isPalidrome(int number, int inversedNumber)

inversedNumber 在不同的 class 上声明,因此其他 classes 无法访问它,只能在它自己的 class 中访问它,您应该将它传递给其他 class 代码如下:

public static void main(String[] args)
   {
      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a value: ");
      int value = scan.nextInt();

      int inversedNumber = reverse(value);
      System.out.println("Is value " +value+ " a palindrome?: " +isPalidrome(value,inversedNumber));
   }
   public static int reverse(int number)
   {
      int reverse = 0;
      while( number != 0 )
      {
         reverse = reverse * 10;
         reverse = reverse + number%10;
         number = number/10;
      }
      return reverse;
   }

   public static boolean isPalidrome(int number, int inversedNumber)
   {
      boolean palidrome;
      if(inversedNumber == number)
         palidrome = true;
      else
         palidrome = false;

      return palidrome;
   }

此外,你也可以将inversedNumber设为全局变量,这样每个classes都可以访问它,你可以在class之外声明它,如下所示:

public static int inversedNumber;

注意。 局部变量只能在块内访问。 {}

因为 inversedNumber 在 main 方法内部是局部的,只能在其主体内访问。您有两种选择来完成这项工作。

  1. 将 inversedNumber 作为参数发送给方法 isPalendrom 并更改需要两个整数的方法的签名,如下所示。

    public static boolean isPalindrome(int number, int inversedNumber) 然后你在 main 中称它为 isPalindrome(value, inversedNumber)

  2. 将变量 inversedNumber 设置为全局变量,然后您就可以在 class.

    中的任何位置访问它

    static int inversedNumber;

然后您可以在 main 中调用它,也可以在其他任何地方调用它。

inversedNumber = reverse(value);