在java中解释这个循环会导致混淆 inta=0,b=0; 对于(int i=0;i2 |++b>2){ a++; } } System.out.println(“a=“+a+”b=“+b”);

在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+

你能解释一下逻辑吗?

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++) {
    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
    ,并实例化
  • 第三行:
    for
    循环将迭代5次
第一次迭代: -第四行:
++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.