我做了一个程序来检查一个数字是否是回文但是无法理解 - 当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 ;
}
}
}
答案 0 :(得分:0)
代码中没有错误:当n
为1
时,您在将<{1}}添加到正在运行的总计后执行n /= 10
(即n%10
)。这使得num
等于num
,这就是您想要的。
当你的循环打印为零时,1
已经等于num
。
答案 1 :(得分:0)
它是int算术,所以:1/10 = 0
答案 2 :(得分: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 ;
}
}
}