格式化问题JAVA

时间:2015-10-09 03:33:28

标签: java boolean palindrome

我必须使用两种方法创建一个代码,要求用户输入一个数字,程序应该判断它是否是一个palidrome。

我的代码如下:

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;
   }
}

但每次运行时,我都会收到一条错误消息,告诉我inversedNumber方法无法找到isPalidrome。但它已在主要方法中初始化。它应该不在主方法中寻找初始化吗?或者我的格式化和/或逻辑错误。

3 个答案:

答案 0 :(得分:3)

inversedNumbermain()中声明,在方法isPalidrome()中无法识别,因为它不在scope内。

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

致电:isPalidrome(value, inversedNumber)

并将方法的签名更改为:

public static boolean isPalidrome(int number, int inversedNumber)

答案 1 :(得分:1)

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

因为inversedNumber在main方法中是本地的,并且只能在其正文中访问。你有两种选择来完成这项工作。

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

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

  2. 里面调用它
  3. 将变量inversedNumber设为全局变量,然后您就可以在类中的任何位置访问它。

    static int inversedNumber;

  4. 然后你可以在main和其他任何地方调用它,因为你现在正在调用它。

    inversedNumber = reverse(value);
    

答案 2 :(得分:-1)

inversedNumber在不同的类上声明,因此其他类无法访问它,但只能在它自己的类中,你应该将它传递给另一个类,如下代码所示:

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作为全局变量,然后每个类都能够访问它,你可以在类之外声明它如下:

public static int inversedNumber;