【发布时间】:2019-10-29 10:01:10
【问题描述】:
我试图找出这个数字是否是自同构的,代码编译得很好,但它说在我标记它的那一行被零除
import java.util.Scanner;
class AutoLoop
{
public static void main()
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number to check if it's automorphic or not");
int num = sc.nextInt();
int sqr = num*num;
int sqrSave=sqr;
int divisor = 10;
int counter = 1;
while (counter<=100)
{
sqr = sqr%divisor; //It says there is divide by zero error on this line
if (sqr==num)
{
System.out.println("Number is an automorphic number");
break;
}
sqr=sqrSave;
divisor*=10;
counter++;
if (counter == 100)
System.out.println("Number is not an automorphic number till the 100th digit.");
}
}
}
我已经尝试过让它 sqr%=divisor;还是不行。
【问题讨论】:
-
您不能将 100 位数字放入
int。所以它会溢出,可能会变成0。 -
num的值是多少? -
num 是用户输入的数字。当我使用小到 2 的数字时,它还说除以零错误。似乎只要有任何数字输入而不是自同构数字,它就会给出错误。
-
似乎无关,但我不认为您的课程是公开的。您如何真正能够执行 main 方法?主函数也没有 String[] 参数。你能分享完整的例子吗
-
Umm ...您使用
double的版本仅在不引发异常的意义上起作用。随着divisor变大,它将失去较低数字的准确性。由于较低的数字在计算sqr时至关重要,因此您很可能会得到错误的答案。