Логика проверки, является ли число палиндромом
Я сделал программу, чтобы проверить, является ли число палиндромом, но не может понять - Когда 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
,
Технически говоря, решение идеально.
Вы пробовали 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 ;
}
}
}