Bird
Raised Fist0
Javaprogramming~20 mins

Object interaction in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
πŸŽ–οΈ
Master of Object Interaction
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Java code involving object interaction?

Consider the following Java classes and main method. What will be printed when the program runs?

Java
class Engine {
    int power;
    Engine(int power) {
        this.power = power;
    }
    int getPower() {
        return power;
    }
}

class Car {
    Engine engine;
    Car(Engine engine) {
        this.engine = engine;
    }
    int totalPower() {
        return engine.getPower() + 50;
    }
}

public class Main {
    public static void main(String[] args) {
        Engine e = new Engine(100);
        Car c = new Car(e);
        System.out.println(c.totalPower());
    }
}
A150
B0
C50
D100
Attempts:
2 left
πŸ’‘ Hint

Look at how Car uses the Engine object to calculate total power.

❓ Predict Output
intermediate
2:00remaining
What is the output when two objects interact with method calls?

Given these classes, what will be printed?

Java
class Wallet {
    private int money;
    Wallet(int money) {
        this.money = money;
    }
    void spend(int amount) {
        money -= amount;
    }
    int getMoney() {
        return money;
    }
}

class Person {
    Wallet wallet;
    Person(Wallet wallet) {
        this.wallet = wallet;
    }
    void buySomething(int price) {
        wallet.spend(price);
    }
}

public class Main {
    public static void main(String[] args) {
        Wallet w = new Wallet(200);
        Person p = new Person(w);
        p.buySomething(70);
        System.out.println(w.getMoney());
    }
}
A70
B200
C130
D-70
Attempts:
2 left
πŸ’‘ Hint

Think about how the Person uses the Wallet to spend money.

πŸ”§ Debug
advanced
2:00remaining
What error does this code produce when objects interact incorrectly?

Examine the code below. What error will occur when running it?

Java
class Book {
    String title;
    Book(String title) {
        this.title = title;
    }
}

class Library {
    Book book;
    Library() {
        // book not initialized
    }
    void printTitle() {
        System.out.println(book.title);
    }
}

public class Main {
    public static void main(String[] args) {
        Library lib = new Library();
        lib.printTitle();
    }
}
AArrayIndexOutOfBoundsException
BCompilation error: book not initialized
CPrints empty string
DNullPointerException
Attempts:
2 left
πŸ’‘ Hint

Think about what happens if you try to access a field of an object that was never set.

πŸ“ Syntax
advanced
2:00remaining
Which option causes a compilation error due to incorrect object interaction?

Look at these code snippets. Which one will NOT compile?

Aclass A { void foo() {} } class B { void bar() { A a; a.foo(); } }
Bclass A { void foo() {} } class B { A a = null; void bar() { a.foo(); } }
Cclass A { void foo() {} } class B { A a = new A(); void bar() { a.foo(); } }
D} } ;)(oof.a { )(rab diov ;)(A wen = a A { B ssalc } }{ )(oof diov { A ssalc
Attempts:
2 left
πŸ’‘ Hint

Check if the object a is initialized before calling its method.

πŸš€ Application
expert
3:00remaining
How many objects are created and what is the final output?

Analyze the code below. How many objects are created and what is printed?

Java
class Node {
    int value;
    Node next;
    Node(int value) {
        this.value = value;
    }
    void setNext(Node next) {
        this.next = next;
    }
    int sum() {
        if (next == null) return value;
        return value + next.sum();
    }
}

public class Main {
    public static void main(String[] args) {
        Node n1 = new Node(1);
        Node n2 = new Node(2);
        Node n3 = new Node(3);
        n1.setNext(n2);
        n2.setNext(n3);
        System.out.println(n1.sum());
    }
}
A1 object created; output: 6
B3 objects created; output: 6
C3 objects created; output: 3
D2 objects created; output: 6
Attempts:
2 left
πŸ’‘ Hint

Count each new Node(...) call and understand the recursive sum method.

Practice

(1/5)
1.

What does it mean when two objects in Java interact?

Choose the best explanation.

easy
A. One object calls a method of another object to perform a task.
B. Two objects share the same memory location.
C. Objects are created using the same class.
D. Objects are stored in the same variable.

Solution

  1. Step 1: Understand object interaction meaning

    Object interaction means objects communicate by calling each other's methods to work together.
  2. Step 2: Evaluate options

    Only One object calls a method of another object to perform a task. describes calling methods between objects, which is how interaction happens.
  3. Final Answer:

    One object calls a method of another object to perform a task. -> Option A
  4. Quick Check:

    Object interaction = method calls between objects [OK]
Hint: Objects interact by calling methods on each other [OK]
Common Mistakes:
  • Thinking objects share memory to interact
  • Confusing object creation with interaction
  • Assuming variables store multiple objects
2.

Which of the following is the correct syntax to call a method start() on an object car in Java?

easy
A. start(car);
B. car.start();
C. car->start();
D. start.car();

Solution

  1. Step 1: Recall Java method call syntax

    In Java, to call a method on an object, use objectName.methodName();.
  2. Step 2: Check each option

    car.start(); matches correct syntax. Options A, B, and C are invalid Java syntax.
  3. Final Answer:

    car.start(); -> Option B
  4. Quick Check:

    Method call = object.method() [OK]
Hint: Use objectName.methodName() to call methods [OK]
Common Mistakes:
  • Using arrow (->) like in C++
  • Reversing method and object order
  • Calling method like a function with object as argument
3.

Consider the following Java code:

class Light {
    boolean isOn = false;
    void toggle() {
        isOn = !isOn;
    }
    boolean status() {
        return isOn;
    }
}

class Room {
    Light light = new Light();
    void switchLight() {
        light.toggle();
    }
    boolean lightStatus() {
        return light.status();
    }
}

public class Main {
    public static void main(String[] args) {
        Room room = new Room();
        System.out.println(room.lightStatus());
        room.switchLight();
        System.out.println(room.lightStatus());
    }
}

What is the output when this program runs?

medium
A. false true
B. true false
C. false false
D. true true

Solution

  1. Step 1: Check initial light status

    Initially, isOn is false, so room.lightStatus() prints false.
  2. Step 2: Toggle light and check status again

    Calling room.switchLight() toggles isOn to true. Then room.lightStatus() prints true.
  3. Final Answer:

    false true -> Option A
  4. Quick Check:

    Initial false, toggled true = false then true [OK]
Hint: Track boolean changes step-by-step [OK]
Common Mistakes:
  • Assuming toggle sets true first without initial check
  • Confusing method calls and variable values
  • Ignoring initial value of isOn
4.

Find the error in this Java code snippet involving object interaction:

class Printer {
    void print(String message) {
        System.out.println(message);
    }
}

public class Main {
    public static void main(String[] args) {
        Printer printer;
        printer.print("Hello World");
    }
}
medium
A. The print statement syntax is incorrect.
B. The method 'print' is not defined in the Printer class.
C. The object 'printer' is declared but not initialized before use.
D. The class Printer should be public.

Solution

  1. Step 1: Check object declaration and initialization

    The object 'printer' is declared but never assigned a new Printer instance.
  2. Step 2: Understand consequences of uninitialized object

    Calling a method on an uninitialized object causes a NullPointerException at runtime.
  3. Final Answer:

    The object 'printer' is declared but not initialized before use. -> Option C
  4. Quick Check:

    Uninitialized object causes runtime error [OK]
Hint: Always initialize objects before calling methods [OK]
Common Mistakes:
  • Assuming declaration equals initialization
  • Thinking method absence causes error here
  • Ignoring runtime NullPointerException
5.

You have two classes, BankAccount and Customer. A Customer has a BankAccount object. You want to add a method transferTo in BankAccount that transfers money to another BankAccount. Which of the following best shows how objects interact to perform this transfer?

class BankAccount {
    double balance;
    void deposit(double amount) { balance += amount; }
    void withdraw(double amount) { balance -= amount; }
    void transferTo(BankAccount other, double amount) {
        // Fill in this method
    }
}

class Customer {
    BankAccount account = new BankAccount();
}
hard
A. deposit(amount); withdraw(amount);
B. other.withdraw(amount); deposit(amount);
C. balance -= amount; other.balance += amount;
D. withdraw(amount); other.deposit(amount);

Solution

  1. Step 1: Understand transfer logic

    To transfer money, withdraw from current account and deposit into the other account.
  2. Step 2: Check method calls for interaction

    Calling withdraw(amount) on this object and deposit(amount) on the other object shows interaction.
  3. Final Answer:

    withdraw(amount); other.deposit(amount); -> Option D
  4. Quick Check:

    Transfer = withdraw from one, deposit to another [OK]
Hint: Transfer = withdraw from self, deposit to other [OK]
Common Mistakes:
  • Withdrawing from the wrong account
  • Directly changing balance without methods
  • Depositing before withdrawing