Skip to the content.

Big Idea 1 Lesson 1.14

Big Idea 1 Lesson 1.14

Popcorn Hacks

Popcorn Hack 1

// Work by Nikhil Maturi

public class Dog {
    // Properties
    String name;
    String breed;  // Added breed property

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

    // Method to print dog's name and breed
    public void printDogInfo() {
        System.out.println("My dog " + name + " is a " + breed + "!");
    }
}

var dog1 = new Dog("Buddy", "Golden Retriever");
dog1.printDogInfo(); // Output: My dog Buddy is a Golden Retriever!
My dog Buddy is a Golden Retriever!

Popcorn Hack 2

// Work by Nikhil Maturi

public class Counter {
    private int count;

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

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

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

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

    // Get current count
    public int getCount() {
        return count;
    }
}

// Use it:
Counter c = new Counter();
c.add(10);           // count = 10
c.subtract(3);       // count = 7
c.multiply(4);       // count = 28
c.divide(7);         // count = 4
c.add(6);            // count = 10
c.getCount();        // returns 10

10

Homework Hacks

import java.text.DecimalFormat;

public class StudentGradeTracker {

    // Student class definition
    public static class Student {
        // Required 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;
            System.out.println("Creating student: " + this.name);
            System.out.println("Student created successfully!\n");
        }

        // Void method that modifies grades: add a normal assignment grade
        public void addGrade(int points) {
            System.out.println("Adding grade: " + points + " points");
            this.totalPoints += points;
            this.numAssignments++;
        }

        // Additional void method that modifies grades (extra credit / bonus)
        public void addExtraCredit(int points) {
            System.out.println("Adding extra credit: " + points + " points");
            this.totalPoints += points;
            // note: extra credit does NOT increment numAssignments in this implementation
        }

        // Void method to display a formatted report
        public void printReport() {
            DecimalFormat df = new DecimalFormat("#.##"); // up to 2 decimal places
            double avg = getAverage();
            System.out.println("\n--- " + this.name + "'s Grade Report ---");
            System.out.println("Student Name: " + this.name);
            System.out.println("Total Points: " + this.totalPoints);
            System.out.println("Assignments Completed: " + this.numAssignments);
            System.out.println("Current Average: " + df.format(avg));
            System.out.println("Letter Grade: " + getLetterGrade());
            System.out.println("Status: " + statusMessage());
            System.out.println("\n========================================\n");
        }

        // Non-void method: compute average (double)
        public double getAverage() {
            if (this.numAssignments == 0) return 0.0;
            return (double) this.totalPoints / this.numAssignments;
        }

        // Non-void method: return letter grade as String
        public String getLetterGrade() {
            double avg = getAverage();
            if (avg >= 90.0) return "A";
            else if (avg >= 80.0) return "B";
            else if (avg >= 70.0) return "C";
            else if (avg >= 60.0) return "D";
            else return "F";
        }

        // Helper: short status message based on letter grade
        private String statusMessage() {
            String letter = getLetterGrade();
            switch (letter) {
                case "A": return "Excellent work!";
                case "B": return "Good job — keep it up!";
                case "C": return "Keep working hard!";
                case "D": return "Needs improvement — ask for help!";
                default:  return "At risk — extra effort recommended!";
            }
        }
    }

    // Main demonstration: create students and use all methods
    public static void main(String[] args) {
        System.out.println("=== Student Grade Tracker System ===\n");

        // Student 1: Emma Rodriguez
        Student emma = new Student("Emma Rodriguez");

        System.out.println("--- Adding Grades for Emma ---");
        emma.addGrade(95);
        emma.addGrade(88);
        emma.addGrade(92);
        emma.addGrade(85);
        // show an example of extra credit
        emma.addExtraCredit(0); // optional; here it has no effect but demonstrates method

        emma.printReport();

        // Student 2: James Wilson
        Student james = new Student("James Wilson");

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

        james.printReport();

        // Final summary
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println("Final Summary:");
        System.out.println(emma.name + " - Average: " + df.format(emma.getAverage()) + " (" + emma.getLetterGrade() + ")");
        System.out.println(james.name + " - Average: " + df.format(james.getAverage()) + " (" + james.getLetterGrade() + ")");
    }
}

StudentGradeTracker.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
Adding extra credit: 0 points

--- Emma Rodriguez's Grade Report ---
Student Name: Emma Rodriguez
Total Points: 360
Assignments Completed: 4
Current Average: 90
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 (A)
James Wilson - Average: 78.33 (C)