• Learning Goals For End of Lesson
  • Table of Different Operations in Java
  • Popcorn Hack #1:
  • Popcorn Hack #2:
  • Homework Assignment for Unit 1.6
  • Option C: Fitness Progress Tracker
  • Sample Output Format
  • Submission Instructions
  • Compound Assignment Operators (AP CS A, Unit 1.6)

    What Are They, and What Do They Help With?

    A compound assignment operator combines an arithmetic (or other) operation with an assignment in one statement.

    For example, instead of writing:

    score = score + 10;
    

    You can write:

    score += 10;
    

    Learning Goals For End of Lesson

    By the end of this lesson, you’ll be able to:

    • Transform clunky x = x + y statements into sleek compound assignments
    • Master all the essential operators (+=, -=, *=, /=, %=, ++, --)
    • Understand evaluation order and avoid common traps

    Table of Different Operations in Java

    Operator Equivalent Full Form Purpose / Typical Use
    += x = x + y Add to a running total; accumulate; string concatenation when LHS is a String.
    -= x = x - y Subtract / reduce something (e.g. subtract a cost, penalty).
    *= x = x * y Multiply — useful for scaling, growth, repeated doubling or factors.
    /= x = x / y Divide — scaling down; used in averages, proportions. (Watch out: integer division if both operands are ints.)
    %= x = x % y Remainder after division — wrap-around logic, parity checks, keeping things within bounds.
    ++ x = x + 1 Add one; often used in loops, counters.
    -- x = x - 1 Subtract one; used in loops as well as decrementing counters.

    Popcorn Hack #1:

    Transform this beginner code into more advanced code using compound assignment operators.

    int playerScore = 1000;
    int playerHealth = 100;
    int enemiesDefeated = 0;
    
    // Player defeats an enemy worth 250 points
    playerScore += 250;
    
    // Player takes 15 damage
    playerHealth -=15;
    
    // Enemy count goes up
    enemiesDefeated += 1;
    
    // Boss battle: double the current score!
    playerScore *= 2;
    
    // Healing potion restores health to 80% of current
    playerHealth *= 4;
    playerHealth /= 5;  // 4/5 = 0.8, but we need integer math
    

    Examples to further understand this concept:

    public class Example {
      public static void main(String[] args) {
        int score = 100;
        double average = 85.5;
        score += 50;       // score = 150
        score -= 25;       // score = 125
        score *= 2;        // score = 250
        score /= 5;        // score = 50  (integer division)
        score %= 15;       // score = 5   (50 % 15)
        average += 4.5;    // average = 90.0
        int count = 0;
        count++;           // count = 1
        count--;
        System.out.println(count); // count = 0
      }
    }
    Example.main(null);
    
    // Output: 0
    // Output: 0 
    // Explanation: The code demonstrates various assignment and arithmetic operations, including integer division and the modulus operator. The final output is 0 after incrementing and decrementing the count variable.
    

    Popcorn Hack #2:

    Write a short program where a variable called score starts at 100. Use at least three different compound assignment operators to update score, and print the result after each step.

    Example goals to try:

    1. Deduct points for a wrong answer (-=)
    2. Double the score with a power-up (*=)
    3. Find remainder after dividing by 7 (%=)
    public class PopcornHack2 {
        public static void main(String[] args) {
            int score = 100;
            System.out.println("Score: " + score);
            score -= 10;
            System.out.println("After wrong answer: " + score);
            score *= 2;
            System.out.println("After power-up: " + score);
            score %= 7;
            System.out.println("Remainder: " + score);
        }
    }
    
    PopcornHack2.main(null);
    
    
    Score: 100
    After wrong answer: 90
    After power-up: 180
    Remainder: 5
    

    Important Rules to keep in mind (AP Test-Specific):

    1. You can only use these when the variable on the left already exists and has a value.

    2. Integer division: when you divide two ints, the fractional part is truncated. Be careful with /=.

    3. Only post-form (x++, x--) is in scope for the AP exam. Prefix forms (++x) are out of scope.

    Homework Assignment for Unit 1.6

    Due: 10/9/2025


    Assignment Overview

    Now that you’ve learned about compound assignment operators, it’s time to put them into practice! You’ll create a short Java program that models a real-world scenario.

    Requirements

    Your program must include:

    • At least 3 different compound assignment operators (+=, -=, *=, /=, %=, ++, --)
    • Meaningful variable names that make sense for your chosen scenario
    • Print statements showing the value after each operation
    • Comments explaining what each operation represents in your scenario
    • A main method that runs your simulation

    Scenario Options

    Choose ONE of the following scenarios to model:

    Option A: Social Media Influencer Simulator

    Model the journey of a content creator tracking their growth:

    Suggested variables to track:
    • followers - Start with some initial followers
    • posts - Number of posts made
    • engagement - Likes/comments received
    • sponsorshipEarnings - Money earned from sponsors
    Example operations you might use:
    • Gain followers from a viral post (followers += 1000)
    • Lose followers from controversial content (followers -= 50)
    • Double engagement from a trending hashtag (engagement *= 2)
    • Calculate average engagement per post (engagement /= posts)
    • Find your ranking position (position %= 100)

    Option B: Bank Account Manager

    Simulate managing a personal bank account over time:

    Suggested variables to track:
    • balance - Current account balance
    • transactions - Number of transactions made
    • monthlyFee - Account maintenance costs
    • interestRate - Interest earned/applied
    Example operations you might use:
    • Add monthly salary (balance += 3000)
    • Subtract rent payment (balance -= 1200)
    • Apply interest rate (balance *= 1.02)
    • Average monthly spending (spending /= 12)
    • Check account tier eligibility (tier %= 5)

    Option C: Fitness Progress Tracker

    Track your fitness journey and daily health metrics:

    Suggested variables to track:
    • totalCalories - Calories consumed/burned
    • workoutDays - Days you’ve exercised
    • stepCount - Daily step count
    • weightGoal - Target weight progress
    Example operations you might use:
    • Add calories from meals (totalCalories += 600)
    • Burn calories from exercise (totalCalories -= 300)
    • Double steps from an active day (stepCount *= 2)
    • Calculate average daily steps (stepCount /= 7)
    • Track weekly goal progress (progress %= 7)

    Sample Output Format

    Your program should produce an output similar to this (this is an example for Option A but the format for other options is similar):

    === SOCIAL MEDIA SIMULATOR ===
    
    Starting followers: 500
    
    Posted a new video!
    
    Followers: 750 (+250 from the viral video)
    
    Controversial opinion posted...
    
    Followers: 700 (-50 from upset followers)
    
    Trending hashtag boost!
    
    Followers: 1400 (doubled from trending!)
    
    Average engagement per post: 35
    
    Final ranking position: 400
    
    === SIMULATION COMPLETE ===
    

    Submission Instructions

    Create a section on your personal blog documenting one of the three provided options. After updating your blog, please submit a personal blog link of your completed assignment to the google form link inserted in the ‘CSA Sign Up Sheet - Team Teach - Trimester 1’ spreadsheet.

    Here is where to submit your homework by 10/9/2025! (Lesson 1.6 Hacks + Homework Submission Form)

    Please read the requirements in the form description before submitting your homework.

    public class BankAccountManager {
        public static void main(String[] args) {
            double balance = 100000.00;
            int transactions = 0;
            double monthlyFee = 1200.00;
            double interestRate = 0.01;
    
            System.out.printf("Starting balance: $%.2f%n", balance);
            System.out.println("Starting transactions: " + transactions);
            System.out.println();
    
            balance += 3000.00;
            transactions++;
            System.out.printf("After paycheck: $%.2f%n", balance);
            System.out.println("Transactions after deposit: " + transactions);
            System.out.println();
    
            balance -= 1450.00;
            transactions++;
            System.out.printf("After rent: $%.2f%n", balance);
            System.out.println("Transactions after rent: " + transactions);
            System.out.println();
    
            balance -= 186.73;
            transactions++;
            System.out.printf("After groceries: $%.2f%n", balance);
            System.out.println("Transactions after groceries: " + transactions);
            System.out.println();
    
            balance += 420.50;
            transactions++;
            System.out.printf("After side gig: $%.2f%n", balance);
            System.out.println("Transactions after side gig: " + transactions);
            System.out.println();
    
            balance -= monthlyFee;
            transactions++;
            System.out.printf("After monthly fee (-$%.2f): $%.2f%n", monthlyFee, balance);
            System.out.println("Transactions after fee: " + transactions);
            System.out.println();
    
            balance *= (1 + interestRate);
            System.out.printf("After interest (+%.2f%%): $%.2f%n", interestRate * 100, balance);
            System.out.println();
    
            double totalSpending = 1450.00 + 186.73 + monthlyFee;
            int daysInMonth = 30;
            totalSpending /= daysInMonth;
            System.out.printf("Average daily spending (/%d): $%.2f%n", daysInMonth, totalSpending);
            System.out.println();
    
            int tier = transactions;
            tier %= 5;
            System.out.println("Transactions this month: " + transactions);
            System.out.println("Rewards tier: " + tier);
            System.out.println();
    
            System.out.printf("Ending balance: $%.2f%n", balance);
            System.out.println("Total transactions: " + transactions);
        }
    }
    
    BankAccountManager.main(null)
    
    Starting balance: $100000.00
    Starting transactions: 0
    
    After paycheck: $103000.00
    Transactions after deposit: 1
    
    After rent: $101550.00
    Transactions after rent: 2
    
    After groceries: $101363.27
    Transactions after groceries: 3
    
    After side gig: $101783.77
    Transactions after side gig: 4
    
    After monthly fee (-$1200.00): $100583.77
    Transactions after fee: 5
    
    After interest (+1.00%): $101589.61
    
    Average daily spending (/30): $94.56
    
    Transactions this month: 5
    Rewards tier: 0
    
    Ending balance: $101589.61
    Total transactions: 5