Java 检查数字是否为回文的逻辑
我制作了一个程序来检查一个数字是否是回文的,但无法理解——当n=1,我不知道n/10时,它是否应该是=0,因为int n=1/10=0.1=0,所以循环应该停止?但它先打印为1,然后打印为0。这是怎么发生的Java 检查数字是否为回文的逻辑,java,loops,palindrome,Java,Loops,Palindrome,我制作了一个程序来检查一个数字是否是回文的,但无法理解——当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);
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 ;
}
}
}代码中没有错误:当
n
为1
时,将n%10
添加到运行总数(即num
)后,您将执行n/=10
。这使得num
等于1
,这就是您想要的
当循环打印零时,
num
已经等于1
这是int算法,因此:1/10=0从技术上讲,解决方案是完美的
你试过系统输出打印(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 ;
}
}
}
步骤1:正确设置代码格式。依我看,这类程序应该先用笔和纸来解决。然后代码就会清晰明了。步骤2:检查数字是否为十进制回文的任务最容易被看作是一个两步过程:首先,将数字转换为字符串。然后检查字符串是否对称。请注意,只检查数字字符串的一半就足够了,并将其与反向的另一半进行比较,否则会检查两次。mvw-我只是在尝试另一种方法。。利奥-我的错…我用过纸和笔,现在拿到了!!谢谢