【问题标题】:Homework Write a test program that prompts the user to enter an integer and reports whether the integer is a palindrome作业 编写一个测试程序,提示用户输入一个整数并报告该整数是否为回文
【发布时间】:2015-03-03 05:32:29
【问题描述】:

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

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

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

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

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

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

有人要求我介绍这条线,但我不知道它是什么意思。这是我唯一的错误。它应该返回真或假,对吗?我该怎么处理它,因为似乎我创建了一个不需要该特定行的代码,即使它是必需的。

【问题讨论】:

  • 数字的最大大小是多少?有内存限制吗?
  • 我不这么认为。上面的说明就是给出的全部内容。只要 '12321' 返回 true 或任何镜像。
  • 克里斯,重新修订并复制输出,停止在reverse 中打印内容。 所有 它应该做的是返回反转的数字。如果要打印,请在main:System.out.println ("Reversing " + number + " gives " + reverse(number)); 中进行。至于真/假位,如果反转的数字与您打印“它是回文”的数字相同,否则您打印“不,它不是”。我不确定如何才能更清楚地说明这一点。
  • 呃......我想我仍然无法理解这一点。我已经清除了重复的条目,但 return (number == reverse(number)); 仍有待补救。我仍然不明白“介绍”是什么意思,这是阻止我提交这个程序的唯一原因......
  • 根据您在本网站上提出的其他问题,“引入”问题似乎是因为您通过将 numberreverse(number) 进行比较,在 main 中复制了 isPalindrome。因此,您永远不会真正调用该函数。在main 中,您应该只有if (isPalindrome(number)) ...

标签: java netbeans


【解决方案1】:

如果你在谈论如何用reverse 来实现isPalindrome,那只是弄清楚数字和它的倒数是否相同。

因此,例如,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));       
    }
}

【讨论】:

  • 'def'?我不认为我对这本书有那么深的了解。
  • @ChrisRedfieldea 那不是java。它是解释代码,即伪代码
  • '(rnum * 10)' 这不就变成0了吗?
  • 是的,但它会改变,因为 num % 10 不会返回 0
  • 真的很讨厌问这个问题:我会用我的...更新我以前的帖子吗?我想正确地做到这一点。
【解决方案2】:

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

【讨论】:

  • 我不想这么说,但现在我只是对为什么需要 String 以及“for”语句感到困惑。
  • @Chris,你不需要字符串,事实上你不应该使用它们。您发布的作业文本清楚地将函数指定为采用int 类型。
  • 对不起,我只是建议你如果想对回文使用反向方法可以做什么。我在想您可以将 int 转换为字符串,然后查找它是否是回文,并在需要时将其转换回来。这仅供参考,因为您要求一种完成项目的方法。
【解决方案3】:

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

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

【讨论】:

  • 我应该更具体。我要将此代码上传到检查代码的程序中。 'StringBuilder' 不在章节中,所以我上传到的程序不会接受它。
  • op 需要实际的回文计算算法(带整数)。没有更快的使用速度。
【解决方案4】:

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

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

}

【讨论】:

  • 好的。这就像我应该在我的代码中同时包含 public static int reverse(int number)public static boolean isPalindrome(int number) 一样令人困惑,这看起来像是我发布的内容的倒退版本。谢谢你的代码,但我不明白你的返工。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2021-12-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多