在java中解释这个循环会导致混淆 inta=0,b=0; 对于(int i=0;i2 |++b>2){ a++; } } System.out.println(“a=“+a+”b=“+b”);
你能解释一下逻辑吗?i=0 a=1(第一个条件为假,所以第二个为检查)b=1 i=1 a=2(第一个条件为假,因此第二个条件为检查)b=2 i=2++a增量a,a=3条件为真,如果条件a变为4,b保持为2,则输入 类似地,i=3A=6B=2和i=4A=8B=2在java中解释这个循环会导致混淆 inta=0,b=0; 对于(int i=0;i2 |++b>2){ a++; } } System.out.println(“a=“+a+”b=“+b”);,java,Java,你能解释一下逻辑吗?i=0 a=1(第一个条件为假,所以第二个为检查)b=1 i=1 a=2(第一个条件为假,因此第二个条件为检查)b=2 i=2++a增量a,a=3条件为真,如果条件a变为4,b保持为2,则输入 类似地,i=3A=6B=2和i=4A=8B=2 在or(| |)条件的情况下,每当编译器遇到真条件时,它就会停止检查其他语句这些是a&b的五次迭代和最终结果。每一行都是循环中每一次迭代的结果 int a = 0, b = 0; for (int i = 0; i < 5; i+
在or(| |)条件的情况下,每当编译器遇到真条件时,它就会停止检查其他语句这些是a&b的五次迭代和最终结果。每一行都是循环中每一次迭代的结果
int a = 0, b = 0;
for (int i = 0; i < 5; i++) {
if (++a > 2 || ++b > 2) {
a++;
}
}
System.out.println("a= " + a + " b=" + b);
我认为你的困惑可能来自于
++a
与a++
的对比。因此,基本上,它们都将a
携带的值增加1
,这意味着a=a+1
不同的是,++a
将首先执行增量,然后执行比较,a++
将首先执行比较,然后执行增量
因此,请查看您的代码:
- 第1行:只声明变量
和a
,并实例化b
- 第三行:
循环将迭代5次for
++a
-->a==1
,然后将其与2
进行比较,依此类推b
,这里表达式返回false
,因此跳过第5行
- 第9行:这里它打印出
a=1b=1
++a
-->a==2
,然后将其与2
进行比较,依此类推b
,这里表达式返回false
,因此跳过第5行
- 第9行:这里它打印出
a=2b=2
++a
-->a==3
,然后将其与2
进行比较,依此类推b
,此时表达式返回true
,因此现在到达第5行
- 第五行:
-->a++
a==4
- 第9行:这里它打印出
a=4 b=3
希望对您有所帮助。++a表示a的当前值在操作之前增加1。(在本例中,在比较a>2之前,它将a的值增加1) a++表示操作后a的当前值增加1。(在这种情况下,增加a的值,但不进行任何操作。) For循环不会被任何东西打断。。。。。因此,它循环了5次(i=0,1,2,3,4) 对于i=0-> a的当前值=0,b的当前值=0 如果(++a>2 |++b>2) 在此语句中,a在与2相比之前增加了1。因此,当前值为0,当前值增加1。新值为1。 现在比较a(1)和2。。。。同样的事情也发生在b身上 如果(1>2 | | 1>2) 这种说法是错误的。因此,转到end语句的末尾 对于i=1->a=1的当前值,b=1的当前值 与之前相同,在比较“a>2”之前,a的值增加了1,同时也增加了b。(新的a=2,b=2) 如果(2>2 | 2>2) 这种说法是错误的。到if语句的末尾 对于i=2->a=2的当前值,b=2 比较前,将a增加1->a=3和b=3 如果(3>2 | | 3>2) 如果条件变为真。然后 a++ 语句执行。 a=4的新值。b的值保持不变(3) 对于i=3->当前值a=4,b=3 将a和b增加1个新值(a=4,b=4) 如果(5>2 | 4>2) 对。然后 a++ a=6的新值,b保持不变(4) 对于i=4->当前值a=6,b=4。 增加a和b(7,5) 如果(7>2 | 5>2) 对。然后 a++ a=8的新值。b保持不变(5) for循环结束(i<5条件失败) 下一个声明 System.out.println(“a=“+a+”b=“+b”)
显示“a=8 b=5”您知道
++a
和a++
之间的区别吗?如果是这样,您的逻辑问题是什么?您得到的输出是什么?您期望得到什么?我建议您阅读并理解增量前和增量后运算符的功能,然后在工作表上手动运行该程序,然后将结果与PC o/p相比较。那会澄清你的概念。实践是关键!理解这类内容的最佳方法是使用调试器逐步完成,在每一步之后检查所有变量的值。“清除概念”是非常不习惯的英语。你可以清理一张支票,一个堵塞的下水道,或者一个酒吧(跳高),但是概念是可以理解的。。。没有清除。(有人能告诉我这个“清晰概念”的用法是从哪里来的吗?)
a b
--------
1 1
2 2
4 2
6 2
8 2
++a > 2 means increment a (by 1) first than compare with 2
++b > 2 means increment b (by 1) first than compare with 2
a++ means a=a+1; means increment a by 1.