Skip to the content.

Calling Instance Methods

Student Teaching Lesson

Popcorn Hack 1

public class Dog {
    private String name;
    private String breed;

    // Constructor
    public Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }

    // Method that prints the dog's info
    public void printInfo() {
        System.out.println("My dog " + name + " is a " + breed + "!");
    }

    // Main method to test it
    public static void main(String[] args) {
        Dog myDog = new Dog("spot", "Golden Retriever");
        myDog.printInfo();
    }
}
Dog.main(null);
My dog spot is a Golden Retriever!

Popcorn Hack 2

public class Counter {
    private int count;

    // Add method
    public void add(int x) {
        count += x;
    }

    // Subtract method
    public void subtract(int x) {
        count -= x;
    }

    // Multiply method
    public void multiply(int x) {
        count *= x;
    }

    // Divide method
    public void divide(int x) {
        if (x != 0) {
            count /= x;
        } else {
            System.out.println("Cannot divide by zero!");
        }
    }

    // Getter method
    public int getCount() {
        return count;
    }

    // Main method to test everything
    public static void main(String[] args) {
        Counter c = new Counter();
        c.add(10);
        c.subtract(2);
        c.multiply(3);
        c.divide(4);
        System.out.println("Final count: " + c.getCount());
    }
}
Counter.main(null);
Final count: 6

MCQ

//QUESTION 1
public class BankAccount {
    private double balance;
    
    public BankAccount(double initialBalance) {
        balance = initialBalance;
    }
    
    public void deposit(double amount) {
        balance += amount;
    }
    
    public double getBalance() {
        return balance;
    }
}
BankAccount.main(null);
|   BankAccount.main(null);

cannot find symbol

  symbol:   method main(<nulltype>)

Answer: B

//QUESTION 2
public class Rectangle {
    private int length;
    private int width;
    
    public Rectangle(int l, int w) {
        length = l;
        width = w;
    }
    
    public int getArea() {
        return length * width;
    }
    
    public void scale(int factor) {
        length *= factor;
        width *= factor;
    }
}

Rectangle rect = new Rectangle(3, 4);
rect.scale(2);
System.out.println(rect.getArea());
48

Answer: C

QUESTION 3

NullPointerException happens when you call an instance method on a reference that is null/uninitialized.

Answer: D

// QUESTION 4
public class Temperature {
    private double celsius;
    
    public Temperature(double c) {
        celsius = c;
    }
    
    public double getFahrenheit() {
        return celsius * 9.0 / 5.0 + 32;
    }
    
    public void setCelsius(double c) {
        celsius = c;
    }
}
Temperature.main(null);
|   Temperature.main(null);

cannot find symbol

  symbol:   method main(<nulltype>)

Answer: D

// QUESTION 5
public class Book {
    private String title;
    private int pages;
    
    public Book(String t, int p) {
        title = t;
        pages = p;
    }
    
    public String getTitle() {
        return title;
    }
    
    public int getPages() {
        return pages;
    }
    
    public void addPages(int additional) {
        pages += additional;
    }
}
Book.main(null);

|   Book.main(null);

cannot find symbol

  symbol:   method main(<nulltype>)

Answer: D


Homework Hack

public class Student {
    // === Instance variables ===
    private String name;
    private int totalPoints;
    private int numAssignments;

    // === Constructor ===
    public Student(String name) {
        this.name = name;
        this.totalPoints = 0;
        this.numAssignments = 0;
    }

    // === Void instance methods (modify state) ===
    /** Adds a grade (0–100 recommended) and updates totals. */
    public void addGrade(int points) {
        totalPoints += points;
        numAssignments += 1;
        System.out.println("Adding grade: " + points + " points");
    }

    /** Prints a formatted report of the student’s performance. */
    public void printReport() {
        System.out.println("\n--- " + name + "'s Grade Report ---");
        System.out.println("Student Name: " + name);
        System.out.println("Total Points: " + totalPoints);
        System.out.println("Assignments Completed: " + numAssignments);
        double avg = getAverage();
        System.out.println("Current Average: " + format2(avg));
        String letter = getLetterGrade();
        System.out.println("Letter Grade: " + letter);
        System.out.println("Status: " + statusFor(letter));
    }

    // === Non-void instance methods (return values) ===
    /** Returns current average as a double; 0.0 if no assignments yet. */
    public double getAverage() {
        if (numAssignments == 0) return 0.0;
        return (double) totalPoints / numAssignments;
    }

    /** Returns a letter grade based on the grading scale. */
    public String getLetterGrade() {
        double avg = getAverage();
        if (numAssignments == 0) return "N/A";
        if (avg >= 90) return "A";
        if (avg >= 80) return "B";
        if (avg >= 70) return "C";
        if (avg >= 60) return "D";
        return "F";
    }

    // === Helpers (private) ===
    private static String format2(double x) {
        return String.format("%.2f", x);
    }

    private static String statusFor(String letter) {
        switch (letter) {
            case "A": return "Excellent work!";
            case "B": return "Great job!";
            case "C": return "Keep working hard!";
            case "D": return "Needs improvement.";
            case "F": return "See me for help.";
            default:  return "No grades yet.";
        }
    }

    // === Demo / main ===
    public static void main(String[] args) {
        System.out.println("=== Student Grade Tracker System ===\n");

        // Student 1: Emma
        System.out.println("Creating student: Emma Rodriguez");
        Student emma = new Student("Emma Rodriguez");
        System.out.println("Student created successfully!\n");

        System.out.println("--- Adding Grades for Emma ---");
        emma.addGrade(95);
        emma.addGrade(88);
        emma.addGrade(92);
        emma.addGrade(85);
        emma.printReport();

        System.out.println("\n========================================\n");

        // Student 2: James
        System.out.println("Creating student: James Wilson");
        Student james = new Student("James Wilson");
        System.out.println("Student created successfully!\n");

        System.out.println("--- Adding Grades for James ---");
        james.addGrade(78);
        james.addGrade(82);
        james.addGrade(75);
        james.printReport();

        System.out.println("\n========================================\n");

        // Final summary
        System.out.println("Final Summary:");
        System.out.println(emma.name + " - Average: " + format2(emma.getAverage()) + " (" + emma.getLetterGrade() + ")");
        System.out.println(james.name + " - Average: " + format2(james.getAverage()) + " (" + james.getLetterGrade() + ")");
    }
}
Student.main(null);
=== Student Grade Tracker System ===

Creating student: Emma Rodriguez
Student created successfully!

--- Adding Grades for Emma ---
Adding grade: 95 points
Adding grade: 88 points
Adding grade: 92 points
Adding grade: 85 points

--- Emma Rodriguez's Grade Report ---
Student Name: Emma Rodriguez
Total Points: 360
Assignments Completed: 4
Current Average: 90.00
Letter Grade: A
Status: Excellent work!

========================================

Creating student: James Wilson
Student created successfully!

--- Adding Grades for James ---
Adding grade: 78 points
Adding grade: 82 points
Adding grade: 75 points

--- James Wilson's Grade Report ---
Student Name: James Wilson
Total Points: 235
Assignments Completed: 3
Current Average: 78.33
Letter Grade: C
Status: Keep working hard!

========================================

Final Summary:
Emma Rodriguez - Average: 90.00 (A)
James Wilson - Average: 78.33 (C)
Criteria Percent Weight Description Self-Grade Comments
Functionality 40% Program runs without errors, creates multiple Student objects, correctly adds grades, calculates averages, and assigns letter grades 40/40 Code compiles cleanly; tested with multiple students; outputs match expected results.
Method Implementation 30% Includes all required methods (addGrade, getAverage, getLetterGrade, printReport) that properly access/modify instance variables 30/30 All methods work as intended, returning accurate averages and letter grades.
Code Quality 20% Clean code with meaningful variable names, proper constructor, and helpful comments explaining method purposes 20/20 Code is clear and well-commented; minor improvement possible in formatting consistency.
Output & Presentation 10% Clear, well-formatted output showing multiple students with different grades and formatted reports 10/10 Output mirrors sample with spacing, dividers, and clear structure.