这是我的计划。我不知道我在哪里除以零,所以我无法解决这个错误。
Exception in thread "main" java.lang.ArithmeticException: / by zero
该程序应该反转任何数字的数字。 恩。 57823 - > 32875 我无法做到这一点。
import acm.program.*;
public class ReverseDigits extends Program {
public void run(){
println("This program reverses the digits in an integer.");
int n = readInt("Enter a positive integer: ");
int x = 10;
int t = 1;
double total = 0;
//Finds the number of digits
while (n > 0){
while (n % x != 0) {
t = t + 1;
x = x * 10;
}
}
//In case the number has one digit the new number is the same
if(t == 1) {
total = n;
}
//Creating the new number
while (t > 1) {
t=t-1;
total = (total + ((( n / (Math.pow(10, t))) - ((n / (Math.pow(10, (t+1)))) * 10 )) * 10));
}
println("The reverse number is " + total);
}
}
答案 0 :(得分:2)
即使堆栈跟踪不会告诉您行号,也很容易找到错误。 原则上,你只有3次分裂。 其中两个是好的,因为非0的东西的力量希望永远不会为0。
但完全错误编程的while循环中的x
变量将采用以下值:
[10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 1410065408,
1215752192, -727379968, 1316134912, 276447232, -1530494976, 1874919424, 1569325056,
-1486618624, -1981284352, 1661992960, -559939584, -1304428544, -159383552, -1593835520,
1241513984, -469762048, -402653184, 268435456, -1610612736, 1073741824, -2147483648,
0]
因此,使用0作为%
的第二个参数将导致异常。
去试试吧。
n
的值不会改变。