反转现有号码
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 % 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
循环的条件将得到满足。
在 while 语句中,它将 reversenum 变量乘以 10,然后将 num/10 的余数加到 reversenum,最后将 num 除以 10。此 while 语句可能会结束,因为由于每个变量都是一个 int,如果 num 不能被 10 整除,则将 num 除以 10 将始终生成 num/10 的舍入版本。
你能解释一下这段代码是如何工作的吗?我已经尝试过任何输入,它总是给出正确的结果。我认为他们将 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 % 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
循环的条件将得到满足。
在 while 语句中,它将 reversenum 变量乘以 10,然后将 num/10 的余数加到 reversenum,最后将 num 除以 10。此 while 语句可能会结束,因为由于每个变量都是一个 int,如果 num 不能被 10 整除,则将 num 除以 10 将始终生成 num/10 的舍入版本。