反转现有号码

时间:2015-07-04 15:09:22

标签: java reverse

你能解释一下这段代码是如何工作的吗?我已尝试过任何输入,它总是给出正确的结果。我认为他们关键的是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);
}

5 个答案:

答案 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)

基本上,代码的作用是:

  • 从原始号码中取出单位数字。
  • 将该数字添加到反向最右侧的位置。
  • 将反向乘以10,因此数字向上移动一个。
  • 将原稿除以10,然后转到下一位数。
  • 直到没有剩余数字为止。

答案 2 :(得分:1)

您从123456789(num)和0(reversenum)开始。然后,您将reversenum乘以10:它保持为0. num % 10num除以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的向上舍入版本。