你能解释一下这段代码是如何工作的吗?我已尝试过任何输入,它总是给出正确的结果。我认为他们关键的是reversenum = reversenum * 10;
,但我需要对它进行一些解释。
public static void main(String args[]) {
int num=123456789;
int reversenum =0;
while( num != 0 ){
reversenum = reversenum * 10;
reversenum = reversenum + num%10;
num = num/10;
}
System.out.println("Reverse of specified number is: "+reversenum);
}
答案 0 :(得分:1)
在每次通过while循环结束时,num
的当前最后一位数被删除,它将成为reversenum
的最后一位数。因此,num
的最后一位数被删除,它将成为添加到reversenum
的第一个数字(因此是reversenum
的第一个数字)。然后它采用最初的num
的最后一位数字,它成为添加到reversenum
的第二个数字(因此是reversenum
的第二个数字)。这种情况一直持续到没有数字可以移动。
让我们看看第一遍:
reversenum
变为0 * 10,即0.然后添加num%10
,即9. reversenum
变为9。
同时整数除法使num
变为12345678
看下一遍:
reversnum
变为9 * 10即90,然后添加num%10
即8,因此reversenum
变为98。
同时整数除法使num
变为1234567。
小警告
你认为90的反面是什么?你应该知道这种情况。
答案 1 :(得分:1)
基本上,代码的作用是:
答案 2 :(得分:1)
您从123456789(num
)和0(reversenum
)开始。然后,您将reversenum
乘以10:它保持为0. num % 10
是num
除以10时的余数:这是9,变为reversenum
。然后将num
除以10,但整数除法得到小数结果的最低点,因此您将得到12345678为num
(不是12345678.9)。在第二轮中,9(reversenum
)乘以10得到90,并添加num
的最后一位数:8。reversenum
变为98,num
变为1234567.这一直持续到num
为0且reversenum
为987654321;然后将满足while
循环的条件。
答案 3 :(得分:0)
让你的号码为12345.我们从最后提取数字。首先,我们在12345除以10时找到余数。余数为5.现在我们将它添加到我们的反转数据中,它应该存储反向数字。然后我们将12345除以10。整数除以整数给出整数值。因此
num = 12345/10 = 1234
我们成倍增加 reversenum减10,使reversenum变为50并再次将余数添加到reversenum所以第二次reverseenum变为54.然后我们提取1234的最后一位数(num变量)。你可以看到这种情况一直持续到总数相反,即num = 0(没有更多的数字要提取)。
答案 4 :(得分:0)
在while语句中,它将reversenum变量乘以10,然后将num / 10的余数加到reversenum,最后将num除以10。这个while语句有可能结束,因为因为每个变量都是一个int,所以如果num不能被10整除,那么将num除以10将总是产生num / 10的向上舍入版本。