Claude JS Class

by kulimusoda

JavaScript

// 要求:
// 1. 創建一個 Student 類別
// 2. 包含 name、age 和 grades(成績陣列)屬性
// 3. 添加 calculateAverage() 方法計算平均成績
// 4. 添加靜態方法 compareStudents(),比較兩個學生的平均成績
// 5. 創建多個學生實例,比較他們的成績

// 你的程式碼實作:
class Student {
  constructor(name, age, grades) {
    this.name = name
    this.age = age
    this.grades = grades
  }

  calculateAverage() {
    if (this.grades.length === 0) {
      throw new Error(`${this.name}沒有成績紀錄`)
    }
    let total = 0
    this.grades.forEach((item) => (total += item))
    return total/this.grades.length
  }

  static compareStudents(stu1, stu2) {
    const avg1 = stu1.calculateAverage().toFixed(2)
    const avg2 = stu2.calculateAverage().toFixed(2)

    if (avg1 > avg2) {
      return `${stu1.name}的平均成績比較高(${avg1})`
    } else if (avg1 < avg2) {
      return `${stu2.name}的平均成績比較高(${avg2})`
    } else {
      return `${stu1.name}跟${stu2.name}的成績相同`
    }
  }
}

try {
  const peter = new Student("Peter", 20, [90, 80, 70])
  const amy = new Student('Amy',22,[])
  console.log(peter.calculateAverage())
  console.log(amy.calculateAverage())
  console.log(Student.compareStudents(peter,amy))
} catch (err) {
  console.log(err.message)
}