一、实验目的
1、掌握类的定义方法
2、掌握对象的创建和使用
3、掌握构造方法的使用
二、实验硬、软件环境
Windows计算机和Eclipse软件
三、实验内容及步骤
1.定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。定义测试类,在测试类中使用Circle类的findArea()方法;
定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:public void printAreas(Cirlcec,inttime)在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。例如,times为6,则输出半径1,2,3,4,5,6,以及对应的圆面积;
定义一个测试类,在测试类的main方法中调用printAreas()方法,调用完毕后输出当前半径值。程序运行结果如图所示。
代码及运行结果:
package 实验五;//方法
public class Circle {
double radius;
public double findArea(){
return Math.PI*radius*radius;}}
package 实验五;//方法
public class PassObject {
public void printArea(Circle c,double time) {
System.out.println("Radius"+" : "+"Area");
for(double i = 1;i <= time;i++) {
c.radius = i;
System.out.println(c.radius + " : "+c.findArea());}}}
package 实验五;//测试类
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
double r = sc.nextDouble();
Circle circle = new Circle();
PassObject p = new PassObject();
p.printArea(circle,r);}}
2.写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;包含的方法:访问器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。
Account |
Private int id Private double balance Private double annualInterestRate |
Public Account(intid,doublebalance,double annualInterestRate) |
Public int getId() Public double getBalance() Public double getAnnualInterestRate() Public void setId(intid) Public void setBalance(doublebalance) Public void setAnnualInterestRate(doubleannualInterestRate) |
提示:在提款方法withdraw中,需要判断用户余额是否能够满足提款数额的
要求,如果不能,应给出提示。并进行测试使用。
代码及运行结果:
package 实验五;
public class Account {
private int id;
private double balance;
private double annualInerestRate;
public Account (int id, double balance, double annualInterestRate) {
this.id = id;
this.balance = balance;
this.annualInerestRate = annualInerestRate; }
public int getId() {
return id;}
public void setId(int id) {
if(id>0) {
this.id = id;}
System.out.println("输入有错");}
public double getBalance() {
return balance;}
public void setBalance(double balance) {
this.balance = balance;}
public double getannualInerestRate() {
return annualInerestRate;}
public void setannualInerestRate(int annualInerestRate) {
this.annualInerestRate = annualInerestRate;}
public void withdraw(double amount) {
if(amount > getBalance()) {
System.out.println("余额不足,取款失败");
}else {
System.out.println("您的取款金额是: "+amount);
this.setBalance(this.getBalance()-amount);
System.out.println("您的当前余额为: "+getBalance());}}
public void deposit(double amount) {
System.out.println("您成功存入"+amount+" 元");
this.setBalance(this.getBalance()+amount);
System.out.println("您的当前余额为: "+getBalance());}}
package 实验五;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Account A1 = new Account(1,50000,0.35);
System.out.println("请选择的操作: 1:取钱 2:存钱");
Scanner sc = new Scanner(System.in);
int unm = sc.nextInt();
if(unm == 1) {
System.out.print("请输入取款机金额: ");
Scanner sc1 = new Scanner(System.in);
A1.withdraw(sc1.nextDouble());
}else if(unm == 2) {
System.out.print("请输入存款机金额: ");
Scanner sc1 = new Scanner(System.in);
A1.deposit(sc1.nextDouble());
}else {
System.out.println("输入有误终止操作");}}}
四、实验结果及分析
1.通过此次实验我掌握了类的定义方法,它拥有具体的语法格式,我们需要输入对应的属性和方法,在第一个实验中圆的面积用PI*radius*radius表示,PassObject方法需要用到for循环,在创建一个测试类,在测试类的main方法中调用printAreas()方法,调用完毕后输出当前半径值,运行后就可得到相应结果。
2.构造方法的使用中,使用new运算符创建对象时JDK会自动调用无参的构造方法,Java中的每一个类都有其构造方法。如果没有定义构造方法,JDK就会自动创建无参数的构造方法。
3.第二个实验比较复杂,其中运用了private关键字来修饰成员变量id、balance、annualInerestRate,getXXX()、setXXX()分别用于获取和设置成员变量的值,方法用public来修饰,还要根据题意运用if循环来实现题目要求。