4 private int numberOfStudents; 5
6 public Course(String name) { 7 this.name = name; 8 } 9
10 public void addStudent(String student) { 11 students[numberOfStudents] = student; 12 numberOfStudents++; 13 } 14
15 public String[] getStudents() { 16 return students; 17 } 18
19 public int getNumberOfStudents() { 20 return numberOfStudents; 21 } 22
23 public String getName() { 24 return name; 25 } 26 }
数组的大小是固定的,对它进行改进,通过创建新的更大的数组并复制当前数组的内容来实现数组尺寸的自动增长。 7.9(整数类MyInteger)设计名为MyInteger的类,它包括: ? int 数据域value存储该对象表示的int值;
? 一个构造方法,当指定int值时,创建MyInteger对象; ? 一个get方法返回int的值;
? 静态方法isEven(),isOdd()和isPrime(),如果value的值为偶数,奇数,或素数时返回true; ? 静态方法
isEven(MyInteger),isOdd(MyInteger)和
isPrime(MyInteger),如果指定的值为偶数,奇数,或素数时返回true; ? equals(int)和equals(MyInteger)方法,如果该对象的值与指定的值
相等,返回true;
? 静态方法parseInt(int)将字符串转变成int值; 编写测试程序运行该类中的所有方法。
7.10改写以下Loan类,增加两个计算月支付额和总支付额的静态方法,如下所示:
1 public class Loan {
2 private double annualInterestRate; 3 private int numberOfYears; 4 private double loanAmount;
5 private java.util.Date loanDate; 6
7 /** Default constructor */ 8 public Loan() {
9 this(7.5, 30, 100000); 10 } 11
12 /** Construct a loan with specified annual interest rate, 13 number of years and loan amount 14 */
15 public Loan(double annualInterestRate, int numberOfYears, 16 double loanAmount) {
17 this.annualInterestRate = annualInterestRate; 18 this.numberOfYears = numberOfYears; 19 this.loanAmount = loanAmount; 20 loanDate = new java.util.Date(); 21 } 22
23 /** Return annualInterestRate */
24 public double getAnnualInterestRate() { 25 return annualInterestRate; 26 } 27
28 /** Set a new annualInterestRate */
29 public void setAnnualInterestRate(double annualInterestRate) { 30 this.annualInterestRate = annualInterestRate; 31 } 32
33 /** Return numberOfYears */
34 public int getNumberOfYears() {
35 return numberOfYears; 36 } 37
38 /** Set a new numberOfYears */
39 public void setNumberOfYears(int numberOfYears) { 40 this.numberOfYears = numberOfYears; 41 } 42
43 /** Return loanAmount */
44 public double getLoanAmount() { 45 return loanAmount; 46 } 47
48 /** Set a newloanAmount */
49 public void setLoanAmount(double loanAmount) { 50 this.loanAmount = loanAmount; 51 } 52
53 /** Find monthly payment */
54 public double getMonthlyPayment() {
55 double monthlyInterestRate = annualInterestRate / 1200; 56 return loanAmount * monthlyInterestRate / (1 -
57 (Math.pow(1 / (1 + monthlyInterestRate), numberOfYears * 12))); 58 } 59
60 /** Find total payment */
61 public double getTotalPayment() {
62 return getMonthlyPayment() * numberOfYears * 12; 63 } 64
65 /** Return loan date */
66 public java.util.Date getLoanDate() { 67 return loanDate; 68 } 69 }
public static double monthlyPayment(double annualInterestRate,
int numOfYears, double loanAmount)
public static double totalPayment(double annualInterestRate, int numOfYears, double loanAmount)
编写测试程序运行所有方法。
7.11(平面点的类MyPoint)设计名为MyPoint的类表示一个具有x坐标和y坐标的点,该类包括: ? 两个数据域x和y表示坐标; ? 无参构造方法创建点(0,0);
? 一个构造方法根据指定坐标创建一个点; ? 两个get方法分别得到数据域x和y;
? distance方法返回MyPoint类型的两个点之间的距离;
? distance方法返回从这一点到另一个指定x和y坐标的点之间的距离;
编写测试程序创建两个点(0,0)和(10,30.5),并显示它们之间的距离。 7.12(显示素数因子)编写程序,读入一个正整数并按降序显示它的所有素数因子。例如,输入的整数为120,显示的素数因子为5,3,2,2,2。使用
StackOfIntegers
类存储因子(如2,2,2,3,5),提取并按
倒序显示这些因子。
1 public class StackOfIntegers { 2 private int[] elements; 3 private int size;
4 public static final int DEFAULT_CAPACITY = 16; 5
6 /** Construct a stack with the default capacity 16 */ 7 public StackOfIntegers() { 8 this(DEFAULT_CAPACITY);
9 } 10
11 /** Construct a stack with the specified maximum capacity */ 12 public StackOfIntegers(int capacity) { 13 elements = new int[capacity]; 14 } 15
16 /** Push a new integer into the top of the stack */ 17 public int push(int value) {
18 if (size >= elements.length) {
19 int[] temp = new int[elements.length * 2];
20 System.arraycopy(elements, 0, temp, 0, elements.length); 21 elements = temp; 22 } 23
24 return elements[size++] = value; 25 } 26
27 /** Return and remove the top element from the stack */ 28 public int pop() {
29 return elements[——size]; 30 } 31
32 /** Return the top element from the stack */ 33 public int peek() {
34 return elements[size - 1]; 35 } 36
37 /** Test whether the stack is empty */ 38 public boolean empty() { 39 return size == 0; 40 } 41
42 /** Return the number of elements in the stack */ 43 public int getSize() { 44 return size; 45 } 46 }
7.13(显示素数)编写程序,按降序显示所有小于120的素数。使用
StackOfIntegers
类存储这些素数(如2,3,5,7…)提取并按倒序显示
它们。