反转现有号码

Reverse an existing number

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

在每次通过 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 的倒数是什么?你应该知道这种情况。

本质上,代码的作用是:

  • 把原来的数字去掉个位
  • 将该数字添加到反面最右边的位置。
  • 将反向乘以 10,因此数字向上移动一位。
  • 将原始数据除以 10,以移动到下一个数字。
  • 这种情况一直发生到没有数字为止。

让你的号码为12345。我们从末尾提取数字。首先我们找到 12345 除以 10 的余数。余数为 5.Now 我们将其添加到我们的 reversenum 中,它应该存储反向数。然后我们将 12345 除以 10。作为一个整数除以一个整数给出一个整数值。因此

数 = 12345/10 = 1234

我们相乘 reversenum 乘以 10 使 reversenum 变为 50,然后再次将余数添加到 reversenum 所以第二次 reversenum 变为 54.Then 我们提取 1234(num 变量)的最后一位。如您所见,这一直持续到总数被反转,即 num=0(没有更多的数字要提取)。

您从 123456789 (num) 和 0 (reversenum) 开始。然后,将 reversenum 乘以 10:它仍然是 0。num % 10num 除以 10 的余数:这是 9,即 reversenumnum 然后除以 10,但整数除法得到小数结果的底部,因此您将得到 12345678 作为 num(不是 12345678.9)。第二遍,9(reversenum)乘以10得到90,加上num最后一位:8。reversenum变成98,num变成1234567。这一直持续到 num 为 0 且 reversenum 为 987654321; while 循环的条件将得到满足。

在 while 语句中,它将 reversenum 变量乘以 10,然后将 num/10 的余数加到 reversenum,最后将 num 除以 10。此 while 语句可能会结束,因为由于每个变量都是一个 int,如果 num 不能被 10 整除,则将 num 除以 10 将始终生成 num/10 的舍入版本。