作业问题是用户输入数字。然后,您必须编写一个颠倒该顺序的程序。因此,如果用户输入7364,则必须编写在下一行显示4637的程序。我想我已经找到了解决方案,但不确定如何编写。
由于最后一个数字是相反的第一个数字,这意味着如果有人输入7364,则意味着我要获得4637。我必须编写一个程序,将4乘以1000、6乘以100、3乘以10和7乘以1。将它们加起来得到4637。我不是100%不确定该怎么做。让我感到困惑的是如何将一个数字乘以1000,再乘以100,再乘以10,再乘以1,然后将这些数字相加。
import acm.program.*;
public class ReverseNumber extends ConsoleProgram{
public void run(){
int n = readInt("please enter any positive number: ");
int total = 0;
while ( n > 0){
total = total + n % 10; <----?
n = n * 1000; <----?
}
println("the reverse order is" + total);
}
}
最佳答案
这应该工作:
total = 0;
while (n > 0) {
total = total * 10 + n % 10;
n = n / 10;
}
println("the reverse order is " + total);
您不必知道原始数字中有多少个数字,无论如何都要遍历所有数字。这是发生了什么:
当您得到一个新的数字(
n % 10
)时,将结果乘以10并将其相加。这样,您可以偏移结果中的数字。然后,通过执行
n / 10
从原始数字中消除最后一位数字(在上一步中添加的最后一位数字)。