实验2 类和对象
【问题描述】定义Money类,其含有三个成员变量:元,角,分。定义两个构造方法,一个构造方法有三个参数分别为:元,角,分;另一个构造方法只有一个参数,表示输入多少分钱,你需要在该构造方法中将分转换为元角分并初始化成员变量元角分。同时定义一个show方法,用于输出成员变量的信息。定义测试类,创建一个Money类对象,并通过键盘输入一个整数代表多少分钱,然后调用show方法输出对应的元角分。
一、实验目的
1.掌握类的定义与成员的封装
2.掌握对象的声明、实例化及成员的引用方法
3.掌握构造方法及实例方法的区别与用法
4.掌握包的使用
5.利用面向对象的思想解决一般问题
二、实验内容
1.设计矩形Rect类
【问题描述】
设计矩形Rect类,有两个float 类型的属性成员长和宽,求面积和周长。
要求:设计两个以上的构造方法
(1)无参数,采用默认值0;
(2)两个参数。
设计测试类,输入长与宽,利用这组数据定义对象1,输出对象1的面积和周长。利用无参构造方法定义对象2,将对象2的长与宽设置为15和6,输出对象2的面积和周长。结果不需要限定小数位数。
【输入形式】对象1的长和宽
【输出形式】
对象1的面积和周长
对象2的面积和周长
测试用例
序号 样例输入 样例输出
1 2 3 6.0 10.0
90.0 42.0
源码:
package areandper;
import java.util.Scanner;
public class AreAndPer {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
float a = in.nextFloat();
float b = in.nextFloat();
Rect person = new Rect(a,b);
System.out.println(person.area()+" "+person.perimetter());
Rect auto = new Rect();
auto.setA(15);
auto.setB(6);
System.out.println(auto.area()+" "+auto.perimetter());
in.close();
}
}
class Rect{
private float a;
private float b;
public float getA() {
return a;
}
public void setA(float a) {
this.a = a;
}
public float getB() {
return b;
}
public void setB(float b) {
this.b = b;
}
public float area() {
float ar = a*b;
return ar;
}
public float perimetter() {
float per = (a+b)*2;
return per;
}
public Rect() {
this.a = 0;
this.b = 0;
}
public Rect(float a,float b) {
this.a = a;
this.b = b;
}
}
运行结果:

2. 学生信息管理
【问题描述】
定义学生类,包括3个成员变量(String 姓名,String 学号,float 分数),两个构造方法(无参构造方法,带三个参数的构造方法用于给成员变量赋值)、calGpa()方法和show()方法。
calGpa()方法用于计算分数所对应的绩点,计算方法:绩点=分数/10-5,如果成绩低于60分,绩点为0.
show()方法用于显示每个学生类对象的信息,包括绩点。
定义测试类,在main方法中实例化一个学生类对象,初始值从键盘输入,输入的顺序为姓名 学号 分数,调用构造方法给成员变量初始化,然后调用对象的show方法输出对象信息。
【输入形式】一个对象的信息,按照姓名 学号 成绩
【输出形式】姓名 学号 成绩(分数保留一位小数) GPA(保留两位小数)
测试用例
序号 样例输入 样例输出
1 linghuchong 100101 92
linghuchong 100101 92.0 4.20
源码:
package Stuinfo;
import java.util.Scanner;
public class StuInfo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String name = in.next();
String ID = in.next();
float Garde = in.nextFloat();
Stu person1 = new Stu(name,ID,Garde);
person1.calGpa();
person1.show();
in.close();
}
}
class Stu{
private String name;
private String ID;
private float Garde;
public float calGpa() {
if (Garde<=60)
return 0;
return Garde/10-5;
}
// public String getName() {
// return name;
// }
// public void setName(String name) {
// this.name = name;
// }
// public String getID() {
// return ID;
// }
// public void setID(String iD) {
// ID = iD;
// }
// public float getGarde() {
// return Garde;
// }
// public void setGarde(float garde) {
// Garde = garde;
// }
public void show() {
System.out.printf(String.format("%s %s %.1f %.2f",name,ID,Garde,calGpa());
}
public Stu() {}
public Stu(String name,String ID,float Garde) {
this.name = name;
this.ID = ID;
this.Garde = Garde;
}
}
运行结果:

3.定义Money类,实现元角分转换
【问题描述】
定义Money类,其含有三个成员变量:元,角,分。定义两个构造方法,一个构造方法有三个参数分别为:元,角,分;另一个构造方法只有一个参数,表示输入多少分钱,你需要在该构造方法中将分转换为元角分并初始化成员变量元角分。同时定义一个show方法,用于输出成员变量的信息。
定义测试类,创建一个Money类对象,并通过键盘输入一个整数代表多少分钱,然后调用show方法输出对应的元角分。
【输入形式】一个整数,表示多少分钱
【输出形式】输出对应的多少元,多少角,多少分
测试用例:
序号 样例输入 样例输出
1: 5 5fen
2: 76 7jiao 6fen
3: 1012 10yuan 1jiao 2fen
源码:
package money;
import java.util.Scanner;
public class Money {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int fen = in.nextInt();
Moneys x = new Moneys(fen);
x.show();
in.close();
}
}
class Moneys{
private int fen;
private int jiao;
private int yuan;
public void conversion(int fen){
this.fen = fen%10;
this.jiao = fen/10%10;
this.yuan = fen/100;
}
public void show() {
if(yuan == 0&&jiao!=0)
System.out.println(jiao+"jiao "+fen+"fen ");
else if(yuan == 0&&jiao == 0)
System.out.println(fen+"fen ");
else
System.out.println(yuan+"yuan "+jiao+"jiao "+fen+"fen ");
}
public Moneys(int fen) {
conversion(fen);
}
public Moneys(int yuan,int jiao,int fen) {
this.fen = fen;
this.jiao = jiao;
this.yuan = yuan;
}
}

4.自定义常用数学类
【问题描述】
定义一个实现常用数学运算的类MyMath,类中提供max()、min()、sum()与average()四个静态方法,每个方法带有三个整型参数,分别实现对三个数求取最大值、最小值、和值及平均值的运算。
定义测试类,在主类中对任意输入的三个整数,调用MyMath类的四种静态方法,求取结果并输出。平均值保留一位小数
【输入形式】输入三个整数
【输出形式】三个数的最大值, 最小值,和以及平均值(保留一位小数)
测试用例:
序号 样例输入 样例输出
1: 7 8 9 max=9
min=7
sum=24
avg=8.0
源码:
package math;
import java.util.Scanner;
public class MMath {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入三个整数:");
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
System.out.println("max=" + MyMath.max(a, b, c));
System.out.println("min=" + MyMath.min(a, b, c));
System.out.println("sum=" + MyMath.sum(a, b, c));
System.out.printf("vag=%.1f", MyMath.average(a, b, c));
}
}
class MyMath {
public static int max(int a, int b, int c) {
return Math.max(a, Math.max(b, c));
}
public static int min(int a, int b, int c) {
return Math.min(a, Math.min(b, c));
}
public static int sum(int a, int b, int c) {
return a + b + c;
}
public static double average(int a, int b, int c) {
return (double)(a + b + c) / 3.0;
}
}
运行结果:

END:快乐无所谓缘由,分享永无止境。
更多推荐


所有评论(0)