“提供将在Eclipse控制台窗口中看到的输出”(需要说明)

时间:2017-04-16 23:33:54

标签: java swing applet

import java.awt.*;
import javax.swing.*;

 public class S17Exam2Q5 extends JApplet {
      int x = 5, y = 100, z = 15;
      public void init( {
         int x = z;
         char z = 'X';
         x = x - 3;
         System.out.println("1: x, y, and z are "+x+" "+y+" "+z);

         if (x <= y) {
             x = 50;
             y = y - 5;
             int y = x + 3;
             z = 'Q';
             System.out.println("2: x, y, and z are "+x+" "+y+" "+z);
          }

          System.out.println("3: x, y, and z are "+x+" "+y+" "+z);

          procExt(int z);

          System.out.println("4: x, y, and z are "+x+" "+y+" "+z);
     }

     public void procExt(x) {
        z = 10;
        int x = 20;
        y = y + 1; 
        System.out.println("5: x, y, and z are "+x+" "+y+" "+z);
     }
}

根据考试答案键,这应该是答案:

1: x, y, and z are 12, 100, X
2: x, y, and z are 50, 53, Q
3: x, y, and z are 50, 95, Q
5: x, y, and z are 20, 96, 10
4: x, y, and z are 50, 96, Q

答案只对1和2有意义,3时我感到困惑。不应该3和2是相同的,因为它们一个接一个地打印,中间没有任何事情发生?并且它不应该是相同的5和4吗?我对procExt子程序发生的事情也有点困惑我写的答案在下面(星号表示不正确的答案)

1: x, y, and z are  12,  100,   X
2: x, y, and z are  50,   53,   Q
3: x, y, and z are  50,  *53*,  Q
5: x, y, and z are  20,  *54*,  10
4: x, y, and z are *20*, *54*, *10*

3 个答案:

答案 0 :(得分:0)

init是一种覆盖从JApplet开发的内部所有内容的方法。那里发生的事情只是覆盖if的范围。在init上初始化现有变量时,java会将其接受为其范围内具有相同名称的新变量。

答案 1 :(得分:0)

原因2&amp; 3之所以不同,是因为#2中的“y”基于语句int y = x + 3;,该语句仅存在于其if语句的范围内。第3行基于语句y = y - 5;,但它存在于if语句的范围之外,因为它在if语句开始之前声明(代码行5)。

5&amp; 5之间的差异4是类似的,不同的范围。 #5使用x方法中声明的procExt(x),这是#4中使用的x

答案 2 :(得分:0)

3:int y(上次使用时间)为53.这并没有覆盖y,仍然设置为95. println使用&#39; int&#39;值,但下次y被调用默认为(非int数值)95,程序仍为y保存。

#p>#4和#5:您是否将问题列为1,2,3,4,5?你有5&amp;两次都向后,所以我会按照我看到的顺序(1,2,3,5,4)

来引用它们

最有意义的是做#5最后,即使我以其他方式列出它们。

5:使用int = 20设置x,所以这次x的读数将是20,y = y + 1将y推到96(并保持4)和z = 10因为它被放在那里

4:记住,#3有x = 50,y = 95,z = Q.注意proc()在4之前运行。使用proc(int z)保持&#39; Q&#39; z中#3的值一次。因为调用了proc(),所以y + 1值计算一次等于96.最后z = 10,因为(int z)调用将z的内容仅保留在值Q一次,z的实际值为&# 39; INT&#39; 20至少一次。这是由于int重载以前的值。使用后会弹出值。