【问题标题】:Head First Java 2nd Ed- Page 44, Chaper 2 [closed]Head First Java 第 2 版-第 44 页,第 2 章 [关闭]
【发布时间】:2023-03-22 08:08:01
【问题描述】:

所以我对 head first java 中的泳池拼图有点困惑。我还不能完全理解这段代码的逻辑是如何工作的。我想知道为什么这段代码的输出是 10。

代码如下:

public class Main {

    public static void main(String [] args){
         Echo e1 = new Echo();
         Echo e2 = new Echo();

         int x =0;

         while(x<4){
            e1.hello();
            e1.count += 1;

            if(x==3){
               e2.count +=1;
            }

            if(x>0){
               e2.count =e2.count + e1.count;
            }
            x += 1;
         }

         System.out.println(e2.count);
   }
}

有人可以指导我吗? (这里是菜鸟)。

【问题讨论】:

  • 我们无法真正告诉您,因为没有提供课程 Echo。但找出答案的一个好方法是使用调试器,并且可能会提供比我们提供的更快的答案
  • @Muffin 发布课程Echo

标签: java


【解决方案1】:

以下列表显示了每个循环后变量的状态:

循环 1:

  • x = 0
  • e1.count = 1(第 9 行)
  • e2.count = 0

循环2:

  • x = 1
  • e1.count = 2(第 9 行)
  • e2。计数 = 2(第 16 行 => x &gt; 0

循环 3:

  • x = 2
  • e1.count = 3(第 9 行)
  • e2.count = 2 + 3 = 5(第 16 行)

循环 4(最后一个):

  • x = 3
  • e1.count = 4(第 9 行)
  • e2.count = 6(第 12 行)
  • e2.count = 6 + 4 = 10(第 16 行)

【讨论】:

    【解决方案2】:

    我已经完成了那一章。所以我知道 Echo 类中有什么以及这个问题是什么。 :) 试试这个代码。

    public class Main {
    
        public static void main(String[] args) {
    
            Echo e1=new Echo();
            Echo e2=new Echo();
    
            int x=0;
            while(x<4)
            {
                e1.hello();
    
                e1.count=e1.count+1;
                if(x==3)
                    e2.count=e2.count+1;
    
                if(x>0)
                    e2.count=e2.count+e1.count;
                x++;
            }
            System.out.println(e2.count);
        }
    }
    

    【讨论】:

    • OP 在问为什么输出是 10。你正在为他回答练习。
    【解决方案3】:

    我想知道为什么这段代码的输出是 10。

    所以这条线让我对它进行了逆向工程。和Echo 类应该类似于下面:

    class Echo
    {
         public int count; 
         void hello() { // ... }    
    }
    

    在你的 main 方法中添加一些打印语句以查看流程:

    public static void main(String [] args){
            Echo e1 = new Echo();
            Echo e2 = new Echo();
    
            int x =0;
            while(x<4){
                //e1.hello();
                e1.count += 1;
                System.out.println("e1.count = " + e1.count);
    
            if(x==3){
                e2.count +=1;
                System.out.println("e2.count = " + e2.count);
            }
    
            if(x>0){
                System.out.println("e2.count = " + e2.count +"+"+ e1.count);
                e2.count =e2.count + e1.count;
                System.out.println("e2.count = "+ e2.count);
            }
            x += 1;
          }
            System.out.println(e2.count);
        }
    

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      相关资源
      最近更新 更多