Java 这个While循环如何退出?(爪哇)
我试图弄清楚这个程序是如何工作的,但我被While循环卡住了,我不明白第二个循环是如何退出的,因为Java 这个While循环如何退出?(爪哇),java,while-loop,binary,Java,While Loop,Binary,我试图弄清楚这个程序是如何工作的,但我被While循环卡住了,我不明白第二个循环是如何退出的,因为v永远不会等于0或负值。因为这是唯一会退出循环的条件,还是我遗漏了更深的东西?该代码将整数(>0)转换为二进制 public class Binary { public static void main(String[] args) { // read in the command-line argument int n = Integer.parseInt(args[0]);
v
永远不会等于0或负值。因为这是唯一会退出循环的条件,还是我遗漏了更深的东西?该代码将整数(>0)转换为二进制
public class Binary {
public static void main(String[] args) {
// read in the command-line argument
int n = Integer.parseInt(args[0]);
// set v to the largest power of two that is <= n
int v = 1;
while (v <= n/2) {
v = v * 2;
}
// check for presence of powers of 2 in n, from largest to smallest
while (v > 0) {
// v is not present in n
if (n < v) {
System.out.print(0);
}
// v is present in n, so remove v from n
else {
System.out.print(1);
n = n - v;
}
// next smallest power of 2
v = v / 2;
}
System.out.println();
}
}
公共类二进制{
公共静态void main(字符串[]args){
//读入命令行参数
int n=Integer.parseInt(args[0]);
//将v设置为二的最大幂,即v是一个int,在Java 1/2中,当int为0时,循环将遍历二的所有幂,因此将达到一,然后为0
在调试器中运行它以查看!v是一个int,在Java 1/2中,int的值为0。您的循环经过了2的所有幂,因此将达到1,然后是0
在调试器中运行它以查看!开始时考虑
n=10
所以
v=8
系统将打印
1010
迭代是:
1-10>8 else语句,因此打印1和:n=2,v=4
2-2首先考虑
n=10
所以
v=8
系统将打印
1010
迭代是:
1-10>8 else语句,因此打印1和:n=2,v=4
2-2我觉得你在理解整数除法时遇到了问题。在整数除法中,3/2
不等于1.5
,而是1
。因此同样地,1/2
不等于0.5
,而是0
。因为变量v
是整数,所以它是整数除以整数2
始终是整数除法。因此您的变量v
最终将达到0
我觉得您在理解整数除法时遇到了问题。在整数除法中,3/2
不等于1.5
而是1
。因此类似地,1/2
也不等于因为变量v
是整数,所以被整数2
除法总是整数除法。所以变量v
最终会达到0说n=2
,然后调试打印v
每个循环,这将解释一切。你知道int吗eger divisions?如果不搜索它,你会找到答案哦好的!我明白了!我会记住“打印”的东西说n=2
,然后调试打印v
每个循环,这会解释一切。你知道整数除法吗?如果不搜索它,你会找到答案哦好的!我明白了!我会记住的“印刷”的东西