diff --git a/src/main/java/com/imwangzhuang/events/practice/RegistrationCalculator.java b/src/main/java/com/imwangzhuang/events/practice/RegistrationCalculator.java index e1e70f8..12183c0 100644 --- a/src/main/java/com/imwangzhuang/events/practice/RegistrationCalculator.java +++ b/src/main/java/com/imwangzhuang/events/practice/RegistrationCalculator.java @@ -3,39 +3,60 @@ package com.imwangzhuang.events.practice; public class RegistrationCalculator { public static void main(String[] args) { - String eventName = "Java 入门分享会"; - int totalSeats = 30; - int registeredSeats = 18; - int requestedSeats = 13; - int pricePerPerson = 50; - boolean registrationOpen = true; + String eventName = "Java 入门分享会"; // 活动名称 + int totalSeats = 30; // 活动最多允许多少人报名 + int registeredSeats = 18; // 已经有多少人报名 + int requestedSeats = 13; // 这一次想报名多少人 + int pricePerPerson = 50; // 每人费用,单位:元 + boolean registrationOpen = true; // 报名是否开放:true 是开放,false 是关闭 + // 剩余名额 = 总名额 - 已报名人数;30 - 18 = 12。 int remainingSeats = calculateRemainingSeats(totalSeats, registeredSeats); - int totalPrice = calculateTotalPrice(requestedSeats, pricePerPerson); - boolean enoughSeats = requestedSeats <= remainingSeats; + // allowed 表示“这一次是否可以报名”,只有所有条件都满足才是 true。 + boolean allowed = canRegister(totalSeats, registeredSeats, requestedSeats, registrationOpen); System.out.println("活动:" + eventName); System.out.println("剩余名额:" + remainingSeats); + System.out.println("能否报名:" + allowed); - System.out.println(canRegister(totalSeats, registeredSeats, requestedSeats, registrationOpen)); + if (allowed) { + // 本次费用 = 本次报名人数 × 每人费用;只有可以报名时才计算。 + int totalPrice = calculateTotalPrice(requestedSeats, pricePerPerson); + System.out.println("本次费用:" + totalPrice + " 元"); + } } + // 根据活动总名额和已报名人数,计算还剩多少名额。 static int calculateRemainingSeats(int totalSeats, int registeredSeats) { return totalSeats - registeredSeats; } + // 根据本次报名人数和每人费用,计算本次总费用。 static int calculateTotalPrice(int requestedSeats, int pricePerPerson) { return requestedSeats * pricePerPerson; } + // 参数依次是:总名额、已报名人数、本次报名人数、报名是否开放。 + // 返回 true 表示可以报名,返回 false 表示不可以报名。 static boolean canRegister(int totalSeats, int registeredSeats, int requestedSeats, boolean registrationOpen) { - // 在这里写你的判断,最后返回 true 或 false - if (!registrationOpen || requestedSeats <= 0 || requestedSeats <= calculateRemainingSeats(totalSeats, registeredSeats)) { + // ! 的意思是“不是”:如果报名没有开放,就不能报名。 + if (!registrationOpen) { return false; - } else { - return true; } - } + // || 的意思是“或者”:以下任意一种名额数据无效,就不能报名。 + if (totalSeats < 0 || registeredSeats < 0 || registeredSeats > totalSeats) { + return false; + } + + // 一次报名至少要有 1 人。 + if (requestedSeats <= 0) { + return false; + } + + // 本次报名人数不超过剩余名额,才可以报名。 + int remainingSeats = calculateRemainingSeats(totalSeats, registeredSeats); + return requestedSeats <= remainingSeats; + } }