Java I';I’我正试着写回文程序,但我的输出并不像预期的那样

Java I';I’我正试着写回文程序,但我的输出并不像预期的那样,java,palindrome,Java,Palindrome,这是我的剧本 public class palindrome { public static void main(String[] args) { int rev = 0; Scanner r = new Scanner(System.in); System.out.println("enter any value"); int n = r.nextInt(); while (n != 0) {

这是我的剧本

public class palindrome {

    public static void main(String[] args) {
        int rev = 0;

        Scanner r = new Scanner(System.in);

        System.out.println("enter any value");

        int n = r.nextInt();

        while (n != 0) {
            rev = rev * 10 + n % 10;
            n = n / 10;
        }

        System.out.println(rev);

        if (n == rev) {
            System.out.println("number is palindrome");
        } else {
            System.out.println("not palindrome");    
    }
}

在您的解决方案中,n始终为0

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

您应该将n复制到另一个变量中

 public static void main(String[] args) {
    int rev = 0;

    Scanner r = new Scanner(System.in);

    System.out.println("enter any value");

    int n = r.nextInt();
    int original = n;

    while (n != 0) {
        rev = rev * 10 + n % 10;
        n = n / 10;
    }

    System.out.println(rev);

    if (original == rev) {
        System.out.println("number is palindrome");
    } else {
        System.out.println("not palindrome");    
}

@用于编辑的NetVipeC。现在可以理解了。在
n=n/10之后插入这一行
System.out.println(“n=“+n+”rev=“+rev”)瞧,你可以看到出了什么问题。顺便说一句,01210是回文,但1210不是。您最好将输入视为字符串。很抱歉,在我的脚本中,While循环是完美的。但它显示的是无效的输出@Giovanni正是我的意思。在循环结束时,n始终为零。