此问题已在此处有答案:
Is floating point math broken?(33答案)
3天前关闭。
定义:一个数被称为自守数,当且仅当它的平方结束于与该数本身相同的数字。
这是我为代码写的:
import java.util.*;
public class AutomorphicOrNot
{
public static void main(String [] args)
{
System.out.println("Enter a number:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int n;
int i;
int t=x^2;
for(i=1;i<t;i++)
{
t=t%10;
}
n=i;
if((t%(Math.pow(10,n)))==x)
{
System.out.println("It is an automorphic number");
}
else
{
System.out.println("It is not an automorphic number");
}
}
}
从数学上讲,代码看起来是正确的。但是,我得到了错误的输出为相同的。例如,当我输入25时,我得到:它不是一个自守数。同样,其他条目也存在差异。
我最近刚开始学习编程。我希望你能帮我找出这个错误。谢谢你。
1条答案
按热度按时间rkue9o1l1#
你有两个错误。
1.
^
是按位XOR运算符。它不是指数运算符。您需要
Math.pow
。2.循环。
这里你的目的是确定你的起始数有多少位,而不是你的平方数。相反,您应该将起始数字除以10,直到结果小于10。您还需要存储起始数字的副本,以便稍后将其与平方数的模数进行比较。
最后的结果看起来像这样,并指出25是一个自守数。