程序求解(简化)

郁零 2019-04-08 08:14:51
新人。 题目:创建一个三角形类,包含属性:private int a,b,c;分别代表三角形的三条边。设计是需要满足如下需求: a. 在创建对象输入三条边,三边取值必须合法(三边均为正值,且任意两边之和大于第三边),否则将无法创建对象; b.为使类更易于维护,必须单独设计一个boolean limit(…)函数,实现对三条边的限制检查,符合创建条件则返回真,否则返回假。 c.该类有一个public boolean setEdges(int x, int y, int z)方法,将a/b/c的值替换成x/y/z,返回true。但当x,y,z的值不满足三角形限制条件时,将不予替换,并返回false; d. 三角形至多能创建3个。 设计该三角形类,并验证上述需求。 我把程序做复杂了(就是打印新三角的那一步),不知如何简化,希望大家看看。 class sanjiao{ private static int total=3; private static int count; private static int a,b,c; public sanjiao(int x,int y,int z){ a=x;b=y;c=z; count++; } public String toString(){return " a="+a+" b="+b+" c="+c;} private static boolean limit(int x,int y,int z){ return x>0&&y>0&&z>0&&(x+y>z)&&(x+z>y)&&(y+z>x)&&count<total; } public static sanjiao creat(int x,int y,int z){ if(limit(x,y,z)==true) return new sanjiao(x,y,z); else return null; } public static boolean setEdges(int x,int y,int z){ if(limit(x,y,z)==true){ a=x;b=y;c=z; return true; } else return false; } } class app{ public static void main (String[] args) {int a,b,c; sanjiao s=new sanjiao(2,3,4);System.out.print(s); if(sanjiao.setEdges(1,2,3)==true) {System.out.println("\nreplace success!"); sanjiao w=new sanjiao(1,2,3);System.out.print(w);} else System.out.println("\nreplace false!"); } }
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
郁零 2019-04-09
  • 打赏
  • 举报
回复
一定会造出三角形对象。因此,为实现“造不出三角对象”这一需求,构造函数就不得开放,即构造函数必须私有化,构造函数私有化之后,谁都无法调用构造函数。 因此应为private sanjiao(),如果用toString就只能改为public,违返规则了。这种情况如何解决? 谢谢
十八道胡同 2019-04-09
  • 打赏
  • 举报
回复
引用 2 楼 Ludwig_H 的回复:
如何在不用toString的前提下打印? 毕竟toString用在这里大材小用了。
那就只能调用输出sanjiao.a b c的三个值了 不过通常的做法 就是重写toString方法,这样封装性好
郁零 2019-04-09
  • 打赏
  • 举报
回复
如何在不用toString的前提下打印? 毕竟toString用在这里大材小用了。
十八道胡同 2019-04-09
  • 打赏
  • 举报
回复
打印就是需要 重载toString()方法,你就是这么做的。 可以的
十八道胡同 2019-04-09
  • 打赏
  • 举报
回复
可以用单例模式。
参考 https://www.cnblogs.com/hupp/p/4487521.html

就是构造函数私有化,但是ToString()函数可以是public,这个不违反单例

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧