lummers
lummers

Reputation: 779

Have I invoked correctly?

I have been given a piece of code (the class QuestionTwo). I am asked to state the values of a, b, and c after method mQ2 is invoked on a newly created object of class Q2.

My main.java file

package openuniversity;

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

My QuestionTwo.java class file:

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

  }
}

I arrived at:

a: 1
b: 1
c: 3

Note I can also select 'undefined' as an answer? So would it be 1, 1, undefined as c does not exist outside of the codeblock?

The question:

Study the following code and then select the options from the drop-down lists below that are correct about the values of a, b and c after the method mQ2 is invoked once on a newly created object of class Q2. Note that the answers you choose for a, b and c may or may not be different from each other.

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?
}

Upvotes: 0

Views: 75

Answers (2)

Vala
Vala

Reputation: 5674

I'd suggest you first print out all the values using System.out.println() after calling mQ2, then step through the code in your mind to try to work out why the values are what they are. Remember that any variable declared is only visible within the scope ({...}s for simplicity), but these variables can have the same name as other variables so they might look like the same even if they're not.

I'd like to particularly point out that c does not exist outside that method.

Upvotes: 0

NPE
NPE

Reputation: 500853

Since this is homework, I'll restrict my answer to a couple of pointers.

  1. You can verify your solution by printing out the variables after calling mQ2() (hint: you could use System.println() for that).
  2. This is either a trick question or is partially ill-defined (hint: think about which a, b and especially c you're being asked about).

Upvotes: 1

Related Questions