java为什么打印此结果

java为什么打印此结果,java,Java,我有两门课: public class Echo { int ilosc = 0; void witaj() { System.out.println("sieeeemasz... "); } } 及 我的问题是关于最后一行-为什么是10?如果有人能告诉我它是如何工作的?我建议您使用调试器一步一步地检查程序。就我个人而言,我已经把你的代码扔进了BlueJ,设置了一个断点,并且获得了所有的信息,为什么会这样 下面是发生的全部情况: e1。第8行中的ilos

我有两门课:

public class Echo {
    int ilosc = 0;
    void witaj() {
        System.out.println("sieeeemasz... ");
    }
}


我的问题是关于最后一行-为什么是10?如果有人能告诉我它是如何工作的?

我建议您使用调试器一步一步地检查程序。就我个人而言,我已经把你的代码扔进了BlueJ,设置了一个断点,并且获得了所有的信息,为什么会这样

下面是发生的全部情况:

  • e1。第8行中的ilosc
    设置为1(0+1)
  • 在循环的下一次运行中,
    e1.ilosc
    再次增加1
  • 当x=1时,第13行中的if语句触发,将
    e1.ilosc
    添加到
    e2.ilosc
    (2+0),将
    e2.ilosc
    设置为2
  • x增加1,
    e1。ilosc
    增加1,使其成为3
  • 第13行中的if再次触发,将
    e1.ilosc
    添加到
    e2.ilosc
    (3+2)<代码>e2。ilosc现在是5
  • e1.ilosc
    增加到4,x增加到3,第10行的if触发,
    e2.ilosc
    增加1,使其成为6
  • 第13行中的if仍会触发并再次将
    e1.ilosc
    (4)添加到
    e2.ilosc
    (6)中。4+6=10,因此
    e2。ilosc
    现在是10

  • x增加到4,循环停止执行,程序打印10。

    使用笔和纸可以跟踪对象成员的值。在使用调试器之前,这是一种更好的方法,因为您的问题非常简单。当您有很多变量要跟踪,并且它们的值会以微妙的方式多次更改时,最好使用调试器


    使用笔和纸跟踪两个
    Echo
    对象的
    ilosc
    值。我否决了这个问题,因为没有证据表明对这个代码执行了任何调试。请您的问题向我们展示您的调试发现了什么,以及关于特定代码行的特定问题。见:和。正确地缩进代码,它是不可读的。2.在纸上执行每条指令,并在每条指令后写入每个变量的值,您就会知道。或者使用调试器逐步检查代码,并在每条指令后检查变量的值。如果代码缩进正确,阅读代码会容易得多。这是一个立体图形。。。
    public class EchoTester {
        public static void main(String[] args) {
            Echo e1 = new Echo();
            Echo e2 = new Echo();
            int x = 0;
            while (x < 4) {
                e1.witaj();
                e1.ilosc = e1.ilosc + 1; 
                if (x == 3) {
                    e2.ilosc = e2.ilosc + 1; 
                }
                if (x > 0) {
                    e2.ilosc = e2.ilosc + e1.ilosc; 
                }
                x = x + 1;
            }
            System.out.println(e2.ilosc);
        }
    }
    
    sieeeemasz... 
    sieeeemasz... 
    sieeeemasz... 
    sieeeemasz... 
    10