【问题标题】:Finding palindrome number in java在java中查找回文数
【发布时间】:2020-05-29 15:38:57
【问题描述】:
import java.util.*;
class Example{
    public static void main(String args[]){
        Scanner input=new Scanner(System.in);
        System.out.print("Input a prefer number :");
        int num=input.nextInt();
        int reverse=0;
        while(num!=0){
            int num1=num%10;
            reverse=(reverse*10)+num1;
            num/=10;
        }

        System.out.println("Reverse num is "+reverse);
        if(num==reverse){
            System.out.println("The number is palindrome");
        }else{
            System.out.println("Try again");
        }
    }
}

当我通过键盘输入数字时,我想确认它是否是回文数字。但我无法得到它。在我的代码的第 7 行中,我已将变量“reverse”初始化为 0 .所以当我在第 14 行创建条件时,“reverse”充当 0。这应该是,但我想让“reverse”等于第 10 行中的值。我该怎么办?

【问题讨论】:

  • 您的问题是您在构建reverse 时破坏了num 变量。最后比较时,num 将为 0,不等于 reverse
  • 好吧,如果你想真正便宜,就这样做:boolean isPalindrome = new StringBuilder(num + "").reverse().toString().equals(num + ""); 你我承认,这可能不是最好的解决方案

标签: java palindrome


【解决方案1】:

将 num 分配给另一个变量,因为它发生变化

import java.util.*;
class Example{
public static void main(String args[]){
    Scanner input=new Scanner(System.in);
    System.out.print("Input a prefer number :");
    int num=input.nextInt();
    int number  = num ; // assign to anaother variable as num gets changed 
    int reverse=0;
    while(num!=0){
        int num1=num%10;
        reverse=(reverse*10)+num1;
        num/=10;
    }

    System.out.println("Reverse num is "+reverse);
    if(number==reverse){
        System.out.println("The number is palindrome");
    }else{
        System.out.println("Try again");
    }
}

}

【讨论】:

  • 非常感谢您的帮助
  • 对于 OP,我建议使用一些意味着的名称,但同时使用名称 num1numbernum 只会让人感到困惑阅读。在我看来,这也将有助于您了解情况。
  • 如果您将数字读取为字符串而不是 int 会容易得多。
【解决方案2】:

您可以考虑将数字视为字符串。

  1. 它允许任意大的数字。
  2. 然后您可以使用 StringBuilder 反转字符串。
            Scanner input=new Scanner(System.in);
            System.out.print("Input a preferred number :");
            String str = input.nextLine();
            StringBuilder sb = new StringBuilder(str);
            String reverse = sb.reverse().toString();
            System.out.println("Reverse num is "+reverse);
            if(str.equals(reverse)){
                System.out.println("The number is palindrome");
            }else{
                System.out.println("Try again");
            }
        } 

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多