回顾:计数器与工具类
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 19 课,共 87 课。
挑战
简单让我们构建一个完整的系统,将用于跟踪实例的 Counter 类与 MathUtils 工具类结合起来,综合运用你学过的静态变量、静态方法、静态代码块和常量。
你将创建 3 个文件来组织代码:
Counter.java:创建一个用于跟踪已创建实例数量的类:- 一个私有静态变量,用于统计实例总数
- 一个私有实例变量
id,用于存储每个计数器的唯一标识符 - 一个构造函数,用于增加实例总数,并将当前总数赋给此实例的 id
- 一个方法
getId(),用于返回此计数器的唯一 id - 一个静态方法
getTotalCount(),用于返回已创建的Counter对象数量
MathUtils.java:创建一个只包含静态成员的工具类(不会实例化):- 一个值为
3.14159的公有常量PI - 一个值为
0.5的公有常量HALF - 一个静态方法
square(int n),用于返回 n 的平方 - 一个静态方法
cube(int n),用于返回 n 的立方 - 一个静态方法
circleArea(double radius),用于返回 PI * radius * radius
- 一个值为
Main.java:演示这两个类如何协同工作。你会收到两个输入:一个用于数学运算的数字,以及要创建的Counter对象数量。打印以下内容:Square: [value]Cube: [value]Circle area (radius=[number]): [value](面积格式为 2 位小数)- 每创建一个
Counter,就打印:Counter [id] created - 最后打印:
Total counters: [count]
你会收到两个输入:一个用于数学计算的数字(int),以及要创建的 Counter 对象数量(int)。
记得通过类名访问静态成员,例如 MathUtils.PI 和 Counter.getTotalCount(),并使用 String.format("%.2f", value) 格式化小数值。
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: 使用 MathUtils 的静态方法计算并打印:
// - 平方:[value]
// - 立方:[value]
// - Circle area (radius=[number]):[value](保留 2 位小数)
// TODO: 创建 'count' 个 Counter 对象
// 每创建一个 Counter 对象,就打印:Counter [id] created
// TODO: 打印已创建的 Counter 对象总数
// Total counters: [count]
}
}
面向对象编程中的所有课
自己练习: Java 在线编译器