2011-10-27 272 views
0

我已经给了一段代码(类QuestionTwo)。 我被要求在新创建的Q2类对象上调用方法mQ2之后声明a,b和c的值。我是否正确调用?

我main.java文件

package openuniversity; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
    QuestionTwo qt = new QuestionTwo(); 
    qt.mQ2(); 
    } 
} 

我QuestionTwo.java类文件:

package openuniversity; 

public class QuestionTwo 
{ 
    int a; 
    int b = 1; 

    public void mQ2() 
    { 
    { 
     int c; 
     int a = 2; 
     c = a; 
    } 

    { 
     int c; 
     int a; 
     c = 3; 
     a = 4; 
    } 

    a++; 

    } 
} 

我到达:

a: 1 
b: 1 
c: 3 

注我还可以选择'undefined'作为答案? 那么它会是1,1,未定义,因为c不存在于代码块之外?

的问题是:

研究下面的代码,然后从下面的下拉列表是大约的,b和c的值正确的选项方法MQ2被调用一次后一个新创建的Q2类对象。请注意,您为a,b和c选择的答案可能彼此不同,也可能不同。

public class Q2 
{ 
    int a; 
    int b = 1; 

    public void mQ2() 
    { 
     { 
      int c; 
      int a = 2; 
      c = a; 
     } 
     { 
      int c; 
      int a; 
      c = 3; 
      a = 4; 

      System.out.println("c: " + c); //correct place? 
     } 
     a++; 
    } 
    System.out.println("a: " + a + "b: " + b); // correct place? 
} 
+0

你是如何到达的?你有没有想过如何验证/反驳你的说法? –

+0

你的问题对我来说并不合适。请注意,这里有本地变量和类变量。当函数退出时局部变量有效地停止存在,所以它们实际上没有IMO值。 –

+1

如果你在一个块('{...}')中声明了一个变量,那么它将在该块完成后停止存在。因此,有多个不同的变量名为'a'和'c',正如Adrian所说,在'mQ2()'运行后没有'c'。 –

回答

0

我建议你打电话MQ2后首次印出使用System.out.println()的所有值,然后通过在你的心中步执行代码,试图找出为什么的值是什么,他们是。请记住,所声明的任何变量仅在范围内可见(为简单起见,{...}),但这些变量可以与其他变量具有相同的名称,因此即使它们不是这样,它们也可能看起来像相同。

我想特别指出c不在该方法之外存在。

+0

谢谢你的帮助雷神,很高兴:) –

1

由于这是功课,我会限制我的答案几个指针。

  1. 您可以验证通过调用mQ2()后打印出的变量您的解决方案(提示:你可以使用System.println()为)。
  2. 这是一个技巧性问题或部分不明确(提示:想想其中ab,特别是c你被问到了)。
+0

感谢您的提示,我欣赏他们。我的困惑是在哪里放我的System.out.println? 我会把(a + b)放在最后一个大括号的上方吗?和(c)在哪里a = 4? –

+0

你必须从你自己的类中打印它们(变量没有公开/私人指定,所以他们默认保护,意味着只要你在同一个包中就可以访问),或者只是制作在打印/ b(您可以从mQ2的最后一行调用)的问题Class中使用单独的toString()方法。你只能在mQ2方法中打印c,但我猜这是问题的一部分 - 它没有任何价值,因为它在执行方法*之后不存在*。 – Thor84no

+0

感谢aix,我感谢您的帮助! –