2011-10-27 5 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クラスファイル:私はこともでき

a: 1 
b: 1 
c: 3 

注:私が到着した

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

    } 
} 

答えとして「未定義」を選択しますか? cはコードブロックの外側に存在しないので、それは1、1、未定義でしょうか?

質問:その後、

研究次のコードとメソッドMQ2を一度に起動された後、a、b及びcの値について正しいの下のドロップダウンリストからオプションを選択クラス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'という名前の複数の異なる変数があり、 'mQ2()'の実行後に 'c'はありません。 –

答えて

0

私は値がどのような彼らである理由をうまくしようとするあなたの心の中でコードをステップ、その後、あなたが最初にMQ2を呼び出した後のSystem.out.println()を使用してすべての値をプリントアウトすることをお勧めしたいですあります。スコープ内でのみ宣言された変数は表示されますが(簡略化のため{...}s)、これらの変数は他の変数と同じ名前を持つことができます。

私は特に、そのメソッドの外側にcが存在しないことを指摘したいと思います。

+0

あなたの助けをありがとうThor、それは感謝しています:) –

1

これは宿題なので、私は答えをいくつかの指針に制限します。

  1. あなたはmQ2()(ヒント:あなたはそのためのSystem.println()を使用することができます)を呼び出した後の変数をプリントアウトして、解決策を確認することができます。
  2. これはトリックの質問または部分的に誤った定義になっている(ヒント:考える程度ab特にcについて、あなたは求められている)のいずれかです。
+0

あなたのヒントをいただき、ありがとうございます。私の混乱はどこに私のSystem.out.printlnを置くのですか? 最後のブレースのすぐ上に(a + b)を付けることはできますか? (c)ここでa = 4? –

+0

自分のクラスからそれらを印刷する必要があります(変数にはパブリック/プライベートが指定されていないので、デフォルトにプロテクトが設定されているため、同じパッケージに入っている限りアクセスできます)。/b(mQ2の最後の行から呼び出すことができます)を出力する質問クラスの別のtoString()メソッドです。 mQ2メソッドの中でのみcを印刷することができますが、それはその質問の一部であると推測しています。メソッド*の実行後に*存在しないため値はありません。 – Thor84no

+0

ありがとう、私はあなたを助けてくれてありがとう! –

関連する問題