Логика проверки, является ли число палиндромом

Я сделал программу, чтобы проверить, является ли число палиндромом, но не может понять - Когда n=1, и я делаю n/10, не должно ли это быть = 0, как int n = 1/10 = 0.1=0, поэтому цикл должен остановиться? Но это печатает как 1 и затем 0. Как это происходит?

import java.util.Scanner;


public class Pallinnumber
{
    public static void main(String[] args) 
    {
        int y =reversenum(1234);
        System.out.println(y);
        Pallinnumber.Pallinnum(12);
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number");
        int x = s.nextInt();
        int z= reversenum(x);
       System.out.println(z);

}

    public static int reversenum(int n)
    {
        int num=0;
        while(n>0)
        {
            num = num*10;
            num=num+n%10;
            n=n/10;
            System.out.println(n);      

        }
    return num;
    }
public static boolean Pallinnum(int n)
{
    if(n==reversenum(n)){
        System.out.println("It is a Pallindrome number");
        return true;
    }
    else 
        {   

            System.out.println("It is not an Pallindrome number");
            return false ;

        }
    }

}

3 ответа

Решение

В коде нет ошибки: когда n является 1, ты сделаешь n /= 10 после добавления n%10 к текущему итогу (т.е. num). Это делает num равный 1, чего ты хочешь.

К тому времени, когда ваш цикл печатает ноль, num уже равен 1,

Это арифметика, так что: 1/10 = 0

Технически говоря, решение идеально.

Вы пробовали System.out.println(1/10); Интересно, что он также отображает 0. Это все о математике и компиляторе.

package univ;
import java.util.Scanner;


public class Pallinnumber
{
    public static void main(String[] args) 
    {

        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number");
        int x = s.nextInt();
        int z= reversenum(x);
       System.out.println(z);
       Pallinnum(z);

}

    public static int reversenum(int n)
    {
        int num=0;
        while(n>0)
        {
            num = num*10;
            num=num+n%10;
            n/=10;
        }
    return num;
    }
public static boolean Pallinnum(int n)
{
    if(n==reversenum(n)){
        System.out.println("It is a Pallindrome number");
        return true;
    }
    else 
        {   

            System.out.println("It is not an Pallindrome number");
            return false ;

        }
    }
}
Другие вопросы по тегам