Unit 1.14 - Methods and Control Structures
Categories: homeworkJava homework assignment covering object methods, encapsulation, and practical programming with a Student Grade Tracker system
Hw 1
public class ObjectCreation {
public static void main(String[] args) {
Car car1 = new Car("Tesla", 2024);
Car car2 = new Car("Honda", 2023);
System.out.println(car1);
System.out.println(car2);
}
}
class Car {
String brand;
int year;
public Car(String brand, int year) {
this.brand = brand;
this.year = year;
}
@Override
public String toString() {
return "Car: " + brand + ", Year: " + year;
}
}
Output
Car: Tesla, Year: 2024 Car: Honda, Year: 2023
Hw #2
public class HeapVsStack {
public static void main(String[] args) {
int pages = 300;
int pagesCopy = pages;
Book b1 = new Book("Java Basics");
Book b2 = b1;
pages = 400;
b1.title = "Advanced Java";
System.out.println("=== Primitive Variables (Stack) ===");
System.out.println("Original pages: " + pages);
System.out.println("Copied pagesCopy: " + pagesCopy);
System.out.println("Note: pagesCopy is INDEPENDENT\n");
System.out.println("=== Object References (Heap) ===");
System.out.println("Book b1: " + b1);
System.out.println("Book b2: " + b2);
System.out.println("Note: b2 points to SAME object as b1");
}
}
class Book {
String title;
public Book(String title) {
this.title = title;
}
@Override
public String toString() {
return "Book Title: " + title;
}
}
Output
=== Primitive Variables (Stack) === Original pages: 400 Copied pagesCopy: 300 Note: pagesCopy is INDEPENDENT
=== Object References (Heap) === Book b1: Book Title: Advanced Java Book b2: Book Title: Advanced Java Note: b2 points to SAME object as b1
Pop hack1
public class Dog {
private String name;
private String breed;
public Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
public void bark() {
System.out.println(name + " says: Woof!");
}
public void printInfo() {
System.out.println("My dog " + name + " is a " + breed + "!");
}
}
class DogTest {
public static void main(String[] args) {
Dog d = new Dog("Fido", "Golden Retriever");
d.bark();
d.printInfo();
}
}
Output
Fido says: Woof! My dog Fido is a Golden Retriever!
Popcorn hack 2
public class Counter {
private int count;
public void add(int x) {
count += x;
}
public void subtract(int x) {
count -= x;
}
public void multiply(int x) {
count *= x;
}
public void divide(int x) {
count /= x;
}
public int getCount() {
return count;
}
}
class CounterTest {
public static void main(String[] args) {
Counter c = new Counter();
c.add(20);
System.out.println("After add(20): " + c.getCount());
c.subtract(5);
System.out.println("After subtract(5): " + c.getCount());
c.multiply(3);
System.out.println("After multiply(3): " + c.getCount());
c.divide(9);
System.out.println("After divide(9): " + c.getCount());
System.out.println("Final count: " + c.getCount());
}
}
Output
After add(20): 20 After subtract(5): 15 After multiply(3): 45 After divide(9): 5 Final count: 5
MC hax
Question 1
Answer: B
BankAccount account = new BankAccount(100.0);
account.deposit(50.0);
double total = account.getBalance();
Question 2
Answer: C (48)
Initial: 3 × 4 = 12
After scale(2): 6 × 8 = 48
Question 3
Answer: B
When the method is called on a reference variable that has not been initialized to an object
Question 4
Answer:d
Temperature temp = new Temperature(15);
int result = temp.setCelsius(30);
Explanation: IT won't compile because setCelsius() is void and cannot be assigned to int result.
Question 5
Answer: D
javaSystem.out.println(novel.getPages());
Extra cred
public class StudentGradeTracker {
public static void main(String[] args) {
System.out.println("=== Student Grade Tracker System ===\n");
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);
System.out.println("\n--- Emma's Grade Report ---");
emma.printReport();
System.out.println("\n========================================\n");
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);
System.out.println("\n--- James's Grade Report ---");
james.printReport();
System.out.println("\n========================================\n");
System.out.println("Final Summary:");
System.out.println(emma.name + " - Average: " + String.format("%.2f", emma.getAverage()) + " (" + emma.getLetterGrade() + ")");
System.out.println(james.name + " - Average: " + String.format("%.2f", james.getAverage()) + " (" + james.getLetterGrade() + ")");
System.out.println("\n========================================");
System.out.println("=== EXTRA CREDIT FEATURES DEMO ===");
System.out.println("========================================\n");
System.out.println("Creating student: Sarah Chen");
Student sarah = new Student("Sarah Chen");
sarah.addGrade(92);
sarah.addGrade(65);
sarah.addGrade(88);
sarah.addGrade(95);
sarah.addGrade(78);
System.out.println("\n--- Sarah's Initial Report ---");
sarah.printReport();
System.out.println("Highest Grade: " + sarah.getHighestGrade());
System.out.println("Lowest Grade: " + sarah.getLowestGrade());
System.out.println("\n--- Dropping Lowest Grade (65) ---");
sarah.dropLowestGrade();
sarah.printReport();
System.out.println("\n--- Comparing Students ---");
int comparison = emma.compareTo(james);
if (comparison > 0) {
System.out.println(emma.name + " has a higher average than " + james.name);
} else if (comparison < 0) {
System.out.println(james.name + " has a higher average than " + emma.name);
} else {
System.out.println(emma.name + " and " + james.name + " have the same average");
}
System.out.println("\n--- Testing Weighted Grades ---");
Student alex = new Student("Alex Johnson");
alex.addWeightedGrade(85, 1.0);
alex.addWeightedGrade(90, 1.5);
alex.addWeightedGrade(78, 2.0);
System.out.println("\n--- Alex's Weighted Grade Report ---");
alex.printReport();
System.out.println("\n--- Testing Reset Feature ---");
Student test = new Student("Test Student");
test.addGrade(100);
test.addGrade(95);
System.out.println("Before reset:");
test.printReport();
test.reset();
System.out.println("\nAfter reset:");
test.printReport();
System.out.println("\n--- Testing Error Checking ---");
Student errorTest = new Student("Error Test");
errorTest.addGrade(-50);
errorTest.addGrade(105);
errorTest.addGrade(85);
errorTest.printReport();
}
}
class Student {
String name;
int totalPoints;
int numAssignments;
private int[] individualGrades;
private double[] gradeWeights;
private int gradeCapacity;
private int actualGradeCount;
public Student(String name) {
this.name = name;
this.totalPoints = 0;
this.numAssignments = 0;
this.gradeCapacity = 10;
this.individualGrades = new int[gradeCapacity];
this.gradeWeights = new double[gradeCapacity];
this.actualGradeCount = 0;
}
public void addGrade(int points) {
if (points < 0) {
System.out.println("Adding grade: ERROR - Grade cannot be negative");
return;
}
if (points > 100) {
System.out.println("Adding grade: ERROR - Grade cannot exceed 100");
return;
}
System.out.println("Adding grade: " + points + " points");
if (actualGradeCount >= gradeCapacity) {
expandArrays();
}
individualGrades[actualGradeCount] = points;
gradeWeights[actualGradeCount] = 1.0;
actualGradeCount++;
totalPoints += points;
numAssignments++;
}
public void addWeightedGrade(int points, double weight) {
if (points < 0 || points > 100) {
System.out.println("Adding weighted grade: ERROR - Invalid grade");
return;
}
System.out.println("Adding weighted grade: " + points + " points (weight: " + weight + "x)");
if (actualGradeCount >= gradeCapacity) {
expandArrays();
}
individualGrades[actualGradeCount] = points;
gradeWeights[actualGradeCount] = weight;
actualGradeCount++;
totalPoints += (int)(points * weight);
numAssignments += (int)weight;
}
private void expandArrays() {
gradeCapacity *= 2;
int[] newGrades = new int[gradeCapacity];
double[] newWeights = new double[gradeCapacity];
for (int i = 0; i < actualGradeCount; i++) {
newGrades[i] = individualGrades[i];
newWeights[i] = gradeWeights[i];
}
individualGrades = newGrades;
gradeWeights = newWeights;
}
public double getAverage() {
if (numAssignments == 0) {
return 0.0;
}
return (double) totalPoints / numAssignments;
}
public String getLetterGrade() {
double avg = getAverage();
if (avg >= 90) return "A";
if (avg >= 80) return "B";
if (avg >= 70) return "C";
if (avg >= 60) return "D";
return "F";
}
public void printReport() {
System.out.println("Student Name: " + name);
System.out.println("Total Points: " + totalPoints);
System.out.println("Assignments Completed: " + numAssignments);
System.out.println("Current Average: " + String.format("%.2f", getAverage()));
System.out.println("Letter Grade: " + getLetterGrade());
String status;
double avg = getAverage();
if (avg >= 90) {
status = "Excellent work!";
} else if (avg >= 80) {
status = "Great job!";
} else if (avg >= 70) {
status = "Keep working hard!";
} else if (avg >= 60) {
status = "Needs improvement.";
} else {
status = "Please see instructor.";
}
System.out.println("Status: " + status);
}
public int getHighestGrade() {
if (actualGradeCount == 0) {
return 0;
}
int highest = individualGrades[0];
for (int i = 1; i < actualGradeCount; i++) {
if (individualGrades[i] > highest) {
highest = individualGrades[i];
}
}
return highest;
}
public int getLowestGrade() {
if (actualGradeCount == 0) {
return 0;
}
int lowest = individualGrades[0];
for (int i = 1; i < actualGradeCount; i++) {
if (individualGrades[i] < lowest) {
lowest = individualGrades[i];
}
}
return lowest;
}
public void dropLowestGrade() {
if (actualGradeCount == 0) {
System.out.println("No grades to drop");
return;
}
int lowestIndex = 0;
int lowestValue = individualGrades[0];
for (int i = 1; i < actualGradeCount; i++) {
if (individualGrades[i] < lowestValue) {
lowestValue = individualGrades[i];
lowestIndex = i;
}
}
System.out.println("Dropping grade: " + lowestValue + " points");
totalPoints -= (int)(individualGrades[lowestIndex] * gradeWeights[lowestIndex]);
numAssignments -= (int)gradeWeights[lowestIndex];
for (int i = lowestIndex; i < actualGradeCount - 1; i++) {
individualGrades[i] = individualGrades[i + 1];
gradeWeights[i] = gradeWeights[i + 1];
}
actualGradeCount--;
}
public int compareTo(Student other) {
double thisAvg = this.getAverage();
double otherAvg = other.getAverage();
if (thisAvg > otherAvg) {
return 1;
} else if (thisAvg < otherAvg) {
return -1;
} else {
return 0;
}
}
public void reset() {
System.out.println("Resetting all grades for " + name);
totalPoints = 0;
numAssignments = 0;
actualGradeCount = 0;
individualGrades = new int[gradeCapacity];
gradeWeights = new double[gradeCapacity];
}
}
Output
=== 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’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’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)
======================================== === EXTRA CREDIT FEATURES DEMO === ========================================
Creating student: Sarah Chen Adding grade: 92 points Adding grade: 65 points Adding grade: 88 points Adding grade: 95 points Adding grade: 78 points
— Sarah’s Initial Report — Student Name: Sarah Chen Total Points: 418 Assignments Completed: 5 Current Average: 83.60 Letter Grade: B Status: Great job! Highest Grade: 95 Lowest Grade: 65
— Dropping Lowest Grade (65) — Dropping grade: 65 points Student Name: Sarah Chen Total Points: 353 Assignments Completed: 4 Current Average: 88.25 Letter Grade: B Status: Great job!
— Comparing Students — Emma Rodriguez has a higher average than James Wilson
— Testing Weighted Grades — Adding weighted grade: 85 points (weight: 1.0x) Adding weighted grade: 90 points (weight: 1.5x) Adding weighted grade: 78 points (weight: 2.0x)
— Alex’s Weighted Grade Report — Student Name: Alex Johnson Total Points: 376 Assignments Completed: 4 Current Average: 94.00 Letter Grade: A Status: Excellent work!
— Testing Reset Feature — Adding grade: 100 points Adding grade: 95 points Before reset: Student Name: Test Student Total Points: 195 Assignments Completed: 2 Current Average: 97.50 Letter Grade: A Status: Excellent work! Resetting all grades for Test Student
After reset: Student Name: Test Student Total Points: 0 Assignments Completed: 0 Current Average: 0.00 Letter Grade: F Status: Please see instructor.
— Testing Error Checking — Adding grade: ERROR - Grade cannot be negative Adding grade: ERROR - Grade cannot exceed 100 Adding grade: 85 points Student Name: Error Test Total Points: 85 Assignments Completed: 1 Current Average: 85.00 Letter Grade: B Status: Great job!