一、实验目的
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:快乐无所谓缘由,分享永无止境。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐