作业 编写一个测试程序,提示用户输入一个整数并报告该整数是否为回文

Homework Write a test program that prompts the user to enter an integer and reports whether the integer is a palindrome

Objective: (回文整数)写方法如下headers:

// Return整数的反转,即reverse(456) returns 654 public static int reverse(int number)

// Return 如果数字是回文,则为真 public static boolean isPalindrome(int number)

使用reverse方法来实现isPalindrome。一个数字是一个回文 如果其反转与自身相同。编写一个测试程序,提示 用户输入一个整数并报告该整数是否为回文。

我的代码在下面...我的尝试在下面。我已经崩溃了,我不知道除了来这里还能做什么。我被困在代码的布尔部分,不知道这段代码的其余部分是否正确。我在互联网上搜索过,看到的例子很少,但其中 none 是有意义的。我是一个视觉学习者,所以 none 这对我来说真的很有意义。 Java 2 个月前开始,所以请不要指望我在知识极其有限的情况下生产黄金。我需要 help-help,而不是琐碎或机智的评论。如果您不想提供帮助,请不要发表评论。

public class NewClass {

public static int reverse(int number) {

int remainder = 0;

while (number != 0) {

  remainder = number % 10;
  number = number / 10; 
  System.out.print(remainder);
 }

   System.out.println(" is the reverse number.");
   return remainder;
 }
    //I don't really know what to do here.
    public static boolean isPalindrome(int number, int remainder) {
    return number == remainder;
    }
   //Nor do I know what I'm doing here. I'm supposed to make the result from 'reverse' either true or false but I don't know what it write, considering the 'Boolean' portion is unfinished.
   public static void main(String[] args) {
   System.out.print("Enter an integer: ");
   java.util.Scanner input = new java.util.Scanner(System.in);
   int number = input.nextInt();

   reverse(number);
   int remainder = 0;

   if ( remainder == ture)
  }
}

修订:

    public class NewClass {

    public static int reverse(int number) {

    int reverse = 0;

    while (number != 0) {

      reverse = (reverse * 10) + number % 10;
      number = number / 10; 
     System.out.print(reverse);
   }

    System.out.println(" is the reverse number.");
    return (reverse);
  }

     public static boolean isPalindrome(int number) {
        return (number == reverse(number)); //Still being asked to introduce this line. I don't know what that means. My book says nothing and the internets isn't helping.
 }

  public static void main(String[] args) {
    System.out.print("Enter an integer: ");
    java.util.Scanner input = new java.util.Scanner(System.in);
    int number = input.nextInt();

    reverse(number);

        if (number == reverse(number)) {
             System.out.println(number + " is a palindrome");
       }
        else{
            System.out.println(number + " is not a palindrome");        
        }
    }
 }

**结果: 运行:

Enter an integer: 121
112121 is the reverse number.
112121 is the reverse number.
121 is a palindrome
BUILD SUCCESSFUL (total time: 2 seconds)**

我的问题:我不知道我在用这段代码的 true 和 false 部分做什么。重点是检查数字,将其与反转数字进行比较,检查它是否是回文。第二个问题是反向数字以两倍的数字重复自身...我不知道我做错了什么或如何解决它。

查询:

   public static boolean isPalindrome(int number) {
            return (number == reverse(number));
          }

我被要求介绍这行,但我不知道它是什么意思。这是我唯一的错误。它应该 return 是真还是假,对吗?我该如何处理它,因为看起来我创建了一个不需要该特定行的代码,即使它是必需的。

如果你在谈论如何根据 reverse 实现 isPalindrome,它只是简单地计算出数字和它的倒数是否相同。

所以,例如,767 是一个回文,因为当反转时,它等于原来的。但是,314159 不是 回文,因为它的反转是一个完全不同的数字,951413

这意味着像这样的伪代码应该足够了(我已经包括了 reverse 因为你当前的实现,虽然关闭,returns 最后的余数而不是倒数):

def reverse(num):
    rnum = 0
    while num != 0:
        rnum = (rnum * 10) + (num % 10)
        num = num / 10
    return rnum

def isPalindrome(num):
    return (num == reverse(num))

如果你想自己弄清楚,请不要看下面。这就是我为达到这种水平的技能而采用的方法,我提供它只是为了完整性。

public class Test {
    public static int reverse (int num) {
        int rnum = 0;
        while (num > 0) {
            rnum = (rnum * 10) + (num % 10);
            num = num / 10;
        }
        return rnum;
    }

    public static boolean isPalindrome (int num) {
        return (num == reverse (num));
    }

    public static void main(String args[])
    {
        System.out.println(isPalindrome (767));       
        System.out.println(isPalindrome (12321));       
        System.out.println(isPalindrome (4));       
        System.out.println(isPalindrome (314159));       
    }
}

我个人使用我的两种方法来做这件事,但是做 StringBuilder 的人也做得很好 :)。 这是我的反转代码,然后我调用它并检查它是否是回文。

public static String reverseString(String str)
{
    String blank = "";
    for(int i = str.length()-1; i >= 0; i--)
    {
        blank = blank + str.charAt(i);
    }
    return blank;
}
// NOW you can call isPalindrome("Whatever string you wanna check.");
public static boolean isPalindrome(String str)
{
    String reverse = reverseString(str);
    if(str.equalsIgnoreCase(reverse))
    {
        return true;
    }
    else
    {
        return false;
    }
}

这是一条线,我认为这是最短的:

int i;  // given
if ((i + "").equals(new StringBuilder(i + "").reverse() + ""))
    // it's a palindrome

这是检查给定数字是否为回文的示例。

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

    if(isPalindrome(palindrome)){
        System.out.println("Number : " + palindrome + " is a palindrome");
    }else{
        System.out.println("Number : " + palindrome + " is not a palindrome");
    }       

}

/*
 * Java method to check if number is palindrome or not
 */
public static boolean isPalindrome(int number) {
    int palindrome = number; // copied number into variable
    int reverse = 0;

    while (palindrome != 0) {
        int remainder = palindrome % 10;
        reverse = reverse * 10 + remainder;
        palindrome = palindrome / 10;
    }

    // if original and reverse of number is equal means
    // number is palindrome in Java
    if (number == reverse) {
        return true;
    }
    return false;
}

}