带约束的三角形

设计三角形类SJ,内有三个double 型成员代表三条边,有一个无参构造函数可创建三边值均为1的单位三角,通过setEdges(x,y,z)来修改三边的值,通过equals(t)判断是否与(t)全等。要求:若新的边值不满足三角形约束“三边均为正值且任意两边之和大于第三边”,则不允许修改三边的值。打印三角形时,输出三条边的具体值。
目的:认识public、private权限的基本作用和应用场合/设计:1.需要禁止用户直接存取三边值(能存取就直接修改),用private修饰三条边来实现;2.setEdges()方法必须所有用户都能接触到,用public修饰实现

class SJ{
	private double a,b,c;                       //三条边属性
	public SJ() {a=1;b=1;c=1;}                  //创建一个单位三角
	private boolean limit(double x,double y,double z) {//三角形的约束条件
		return (x>0&&y>0&&z>0&&x+y>0&&x+z>0&&y+z>x);
	}
	public void setEdges(double x,double y,double z) {
		if(limit(x,y,z)==false)return ;   //不满足约束条件,则不能修改
		else {a=x;b=y;c=z;}
	}
	public String toString() {return "a="+a+",b="+b+",c="+c;}
	public boolean equals(SJ t) {
		String s=a+","+b+","+c;        //将三边连接成字符串
		String x,y,z; x=t.a+"";y=t.b+"";z=t.c+"";//将三边转变成字符串
		if(s.indexOf(x)<0)return false;//若x在s中不存在,则不可能全等
		else s=s.replaceFirst(x,"#");//把s中的x用#替换,即删除其中的x
		if(s.indexOf(y)<0)return false;
		else s=s.replaceFirst(y,"#");//把s中的y用#替换,即删除其中的y
		if(s.indexOf(z)<0)return false;//此前已有两条边相等
		else return true;
	}
}
class App{
	public static void main(String[] args) {
	SJ t1,t2,t3;   t1=new SJ();
	//下面模拟能否不通过t的对外接口(即public方法),直接存取t的private成员
	//t.a=2;t.limit(2,3,4)//两条语句均会产生编译错:因为外部不能使用private成员
	t1.setEdges(1,2,3);System.out.println("赋值1,2,3,t1: "+t1);
	t1.setEdges(2,3,4);System.out.println("赋值2,3,4,t1: "+t1);
	t2=new SJ();t2.setEdges(3,4,2);System.out.print("t2:"+t2);
	t3=new SJ();t3.setEdges(3,4,5);System.out.print("\tt3:"+t3);
	System.out.print("\n");
	System.out.print(" t1==t2: "+t1.equals(t2));
	System.out.print(" \tt1==t3: "+t1.equals(t3));
	}
}

在这里插入图片描述
分析:
1.权限用于标注“类及其成员”何时能使用(即可视)。
2.用private修饰的成员,在类外部就不能使用。
3.用public修饰的成员,通常是类对外提供的服务。即:类的设计者希望通过public来操纵类或对象的使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值