【Java实验四】构造方法与方法重载

 仅供参考,严禁抄袭!!!

目录

一、实验一

二、实验二  - 待改进


一、实验一

编写一个 Java 应用程序,该程序中有 3 个类:Triangle、T rapezium 和 Circle,分别用来 表示三角形、梯形和圆形。具体要求如下。

  • Triangle 类具有类型为 double 的三个边、周长以及面积属性,Triangle 类具有构造方法初始化属性和返回周长、面积以及修改三个边的功能。另外,Triangle 类还具有一个 boolean 型的属性,该属性用来判断三个数能否构成一个三角形。
  • Trapezium 类具有类型为 double 的上底、下底、高以及面积属性,具有构造方法初始化属性和返回面积的功能。
  • Circle 类具有类型为double的半径、周长以及面积属性,具有构造方法初始化属性和返回周长、面积的功能。
package text;

import java.util.*;

public class Text //主类 
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请选择您想计算的图形!");
		System.out.println("1是三角形,2是梯形,3是圆形");
		int idx=sc.nextInt();
		
		switch(idx)
		{
			case 1:
			{
				System.out.println("请输入三角形的三边!");
				double x=sc.nextDouble();
				double y=sc.nextDouble();
				double z=sc.nextDouble();
				
				Triangle p=new Triangle(x,y,z);
				p.get_m(x,y,z);
				p.get_area(x,y,z);
				
				System.out.println("请修改三角形的三边!");
				double x1=sc.nextDouble();
				double y1=sc.nextDouble();
				double z1=sc.nextDouble();
				p.change(x, y, z, x1, y1, z1);
				p.get_m(x1, y1, z1);
				p.get_area(x1, y1, z1);
				
				break;
			}
			case 2:
			{
				System.out.println("请输入梯形的上底、下底、高!");
				double x=sc.nextDouble();
				double y=sc.nextDouble();
				double h=sc.nextDouble();
				
				Trapezium p=new Trapezium(x,y,h);
				p.get_area(x, y, h);
				
				break;
			}
			case 3:
			{
				System.out.println("请输入圆的半径!");
				double r=sc.nextDouble();
				
				Circle p=new Circle(r);
				p.get_area(r);
				p.get_m(r);
				
				break;
			}
		}
	}
}

class Triangle
{
	double a,b,c;
	double m,area; //m是周长 area是面积
	
	Triangle(double a,double b,double c)
	{
		this.a=a;
		this.b=b;
		this.c=c;
	}
	
	public boolean check(double a,double b,double c)
	{
		if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a) return false;
		return true;
	}
	
	public void get_m(double a,double b,double c)
	{
		if(check(a,b,c)) 
			System.out.printf("三角形的周长为:%.2f\n",a+b+c);
		else
		System.out.printf("不能构成三角形!请您重新输入!\n");
	}
	
	public void get_area(double a,double b,double c)
	{
		if(check(a,b,c))
		{
			double p=(a+b+c)/2;
			double Area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
			System.out.printf("三角形的面积为:%.2f\n",Area);
		}
		else System.out.printf("不能构成三角形!请您重新输入!\n");
	}
	
	//修改三边
	public void change(double a,double b,double c,double x,double y,double z)
	{
		a=x;  b=y;  c=z;
	}
}

class Trapezium
{
	double x,y,h;
	double area;
	
	Trapezium(double x,double y,double h)
	{
		this.x=x;
		this.y=y;
		this.h=h;
	}
	
	public void get_area(double x,double y,double h)
	{
		System.out.printf("梯形的面积是:%.2f\n",(x+y)*h/2);
	}
}

class Circle
{
	double r;
	double area,m;
	static double PI=3.14159;
	
	Circle(double r)
	{
		this.r=r;
	}
	
	public void get_m(double r)
	{
		System.out.printf("圆形的周长是:%.2f\n",2*PI*r);
	}
	
	public void get_area(double r)
	{
		System.out.printf("圆形的面积是:%.2f\n",r*PI*r);
	}
}

 

 

 

 

二、实验二  - 待改进

重载3个不同版本的max方法和min方法,这些方法均有3个参数,分别用来求3个int、3个long、3个float数的最大值和最小值。编写Java应用程序,使用这些方法。

package text;

import java.util.*;

public class Text //主类 
{
	public static void main(String[] args)
	{
		Max_Min p=new Max_Min();
		System.out.println(p.max(2, 6, 8));
		System.out.println(p.min(2, 6, 8));
	}
}

class Max_Min
{
	public int max(int x,int y,int z)
	{
		int res=Math.max(Math.max(x,y),z);
		return res;
	}
	
	public int min(int x,int y,int z)
	{
		int res=Math.min(Math.min(x,y),z);
		return res;
	}
	
	public long max(long x,long y,long z)
	{
		long res=Math.max(Math.max(x,y),z);
		return res;
	}
	
	public long min(long x,long y,long z)
	{
		long res=Math.min(Math.min(x,y),z);
		return res;
	}
	
	public float max(float x,float y,float z)
	{
		float res= x>y? x:y;
		res=res>z? res:z;
		return res;
	}
	
	public float min(float x,float y,float z)
	{
		float res= x>y? y:x;
		res=res>z? z:res;
		return res;
	}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值