1

作为作业,我要写两种方法;一种是使用 public static int(int number) 的反转方法,而另一种是使用 public static boolean isPalindrome(int number) 的回文方法。我已经为此工作了几个小时,老实说,我很难过。我不是要求为我完成我的作业,只是帮助了解从这里去哪里。谢谢。我当前的代码如下;

public class Exercise
{
    public static void main(String[] args)
    {

        System.out.println("Please enter an integer. ");
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
        boolean Final = isPalindrome(number);
        System.out.println(Final);

    }

    public static int reverse(int number)
    { // missing return?
        int y;
        int n;
        for (n = 0; n <= number; n++)
        { // parameters
            y = number % 10; // remainder
            number = number / 10; // gets rid of last digit
            n = n * 10 + y; // sets reverse values

            return n; // returns reversed number
        }
    }

    public static boolean isPalindrome(int number)
    {
        int n = reverse(number); // call reverse method
        boolean result; // declare result
        if (n = number)
        { // incompatible types?
            result = true;
            System.out.println("The number " + number + " is a " + "Palindrome" + ".");
        }
        else if (n != number)
        {
            result = false;
            System.out.println("The number " + number + " is a Palindrome" + ".");
        }
        return result; // not initialized?
    }
}
4

6 回答 6

3

return n;for循环中。只需将花括号移到其上方即可。

另外,将for循环更改为while (number > 0) {

并更改(n = number)(n == number)

另外,删除中的第二个if条件isPalindrome,您不需要它。放else. 这将使编译器告诉您这return result;是无法访问的……只需将其删除即可。

于 2012-11-05T04:47:34.273 回答
1

使用回文 IMO 的字符串更容易。

来源帖子: 你如何确定一个字符串是否是回文?

int someNumber = 12321;
String palindrome = someNumber+"";
boolean isPalindrome = palindrome.equals(new StringBuilder(palindrome).reverse().toString());

使用您的代码,它将是:

public static void main(String[] args)
{

    System.out.println("Please enter an integer. ");
    Scanner input = new Scanner(System.in);
    int number = input.nextInt();
    String palindrome = number+"";
    boolean result = palindrome.equals(new StringBuilder(palindrome).reverse().toString());
    System.out.println(result);

}
于 2012-11-05T05:14:04.347 回答
1

/* 使用方法和接口的回文程序 */

 import java.util.Scanner;

 interface Test    //  All methods inside interface are treated "Public"
    {                 //  and abstract in nature by default   
String getInput();
boolean IsPalindrome(String s);
void displayInput();
         }

  abstract class Sub_Test  implements Test
       {
   public String getInput()
   {
       Scanner scan = new Scanner(System.in);
       System.out.println("Enter a String ");
       String str = scan.nextLine();
       return str;
   }
   public boolean IsPalindrome(String s)
       { 
       int limit = s.length() - 1;
       char st1 [] = s.toCharArray();
   Inner:for( int i = 0,j = limit; i < j ; i++,j--)
       {
           if(st1[i] == st1[j])
               return true;
           else 
               break Inner;
       }
              return false;
   }
          public void displayInput()
            {
      String input = getInput();
      boolean word = IsPalindrome(input);
      if(word)
        System.out.println("Given String "+input+" is palindrome ");
      else
        System.out.println("Given String "+input+" is NOT palindrome ");
                }   // End of displayInput() method

             }  // End of Sub_test abstract class

    public class String_Session1 extends Sub_Test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String_Session1 object = new String_Session1();
    object.displayInput();
}
          }  // End of String-Session1 Main class

/* 输出如下 */

   Enter a String 
   Race CAR

   Given String Race CAR is palindrome
于 2013-09-22T16:55:32.477 回答
1

逆向逻辑问题。

尝试这个

 public static int reverse(int number)
        {  
            int result = 0;
            int remainder;
            while (number > 0)
            {
                remainder = number % 10;
                number = number / 10;
                result = result * 10 + remainder;
            }

            return result;
        }
于 2012-11-05T04:56:31.577 回答
0

只需通过数学函数获取数字的位数,然后使用 '/' 和 '%' 操作进行迭代,如下所示。在 x = (x % 除数) / 10 之后,我们应该将除数除以 100,因为我们进行了 2 次零操作。

public static boolean isPalindrome(int x) {
        if (x < 0) return false;
        if (x < 10) return true;

        int numDigits = (int)(Math.log10(x)+1);
        int divider = (int) (Math.pow(10, numDigits - 1));
        for (int i = 0; i < numDigits / 2; i++) {
            if (x / divider != x % 10)
                return false;
            x = (x % divider) / 10;
            divider /= 100;
        }
        return true;
    }
于 2017-01-17T07:51:24.013 回答
0

如果您正在为数字回文写作。这是提示:

布尔方法

public static boolean ispalindrome(int number)
    {
        int num=reverse(number);
        boolean res;
        if (num == number){
            res=true;
        System.out.println("The Entered number "+number+ " is a palindrome");}
        else {
            res=false;
            System.out.println("The Entered number "+number+" is not a palindrome");}
        return res;
    }

在你的主要方法中,

boolean Res=ispallindrome(number);  

可以用来检查情况。

于 2015-10-22T01:06:11.020 回答