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

时间:2015-03-03 05:32:30

标签: java netbeans

目的: (Palindrome整数)使用以下标题编写方法:

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

//如果number是回文,则返回true public static boolean isPalindrome(int number)

使用反向方法实现isPalindrome。一个数字是回文 如果它的逆转与自身相同。写一个提示的测试程序 user输入一个整数并报告整数是否为回文。

我的代码如下......我的尝试如下。我崩溃了,我不知道还能做什么但是来到这里。我被困在代码的布尔部分,不知道这段代码的其余部分是否正确。我已经浏览了互联网并看到了很少的例子,但没有一个是有道理的。我是一个视觉学习者,所以这些对我来说都没有意义。 2个月前开始使用Java所以请不要指望我用非常有限的知识生产黄金。我需要帮助,而不是小气或诙谐的评论。如果您不想提供帮助,请不要发表评论。

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)**

我的问题:我不知道我正在使用此代码的真假部分。关键是检查数字,将其与反转数字进行比较,检查它是否是回文。第二个问题是反向数字重复自身,数字加倍...我不知道我做错了什么或如何解决它。

查询:

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

我被要求介绍这条线,但我不知道这意味着什么。这是我唯一的错误。它应该返回真或假,正确吗?我该怎么办呢,因为我似乎创建了一个不需要特定行的代码,即使它是必需的。

4 个答案:

答案 0 :(得分:3)

如果您正在谈论如何在isPalindrome方面实施reverse,那么只需确定数字及其反向是否相同。

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

这意味着像这样的伪代码就足够了(我已经包含了reverse,因为你当前的实现虽然接近,却返回最后的余数而不是反转的数字):

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

答案 1 :(得分:0)

我个人使用我的两种方法来做,但是做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;
    }
}

答案 2 :(得分:0)

这是一个单行,我认为这是最短的:

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

答案 3 :(得分:0)

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

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

}