黑马程序员技术交流社区

标题: 一个判断三角形的功能实践 [打印本页]

作者: 深井看海    时间: 2012-11-11 23:33
标题: 一个判断三角形的功能实践
定义三个数,判断是否可以组成三角形,如果可以,判断是什么角的三角形,什么边的三角形?

作者: 廖力    时间: 2012-11-12 01:30
本帖最后由 廖力 于 2012-11-12 01:37 编辑

三角类Triangle里面有基本的方法;
  1. package com.Lland.Triangle;

  2. import java.util.Arrays;
  3. /**
  4. *
  5. * @discription 判断是什么三角形
  6. * 构造方法public Triangle(int a, int b, int c)
  7. * 判断方法public String judgeTriangle()
  8. * 使用:
  9. * Triangle triangle = new Triangle(5, 3, 4);
  10. * System.out.println(triangle.judgeTriangle());
  11. *
  12. * @author 廖力
  13. * @time 2012年11月12日 01:29:35
  14. */
  15. public class Triangle {
  16.         private int shorter, fit, longer;//三条边
  17.         public Triangle(int a, int b, int c) {//构造方法,传进来三条边时候排序
  18.                 int[] array = new int[3];
  19.                 array[0] = a;
  20.                 array[1] = b;
  21.                 array[2] = c;
  22.                 Arrays.sort(array);
  23.                 shorter = array[0];
  24.                 fit = array[1];
  25.                 longer = array[2];
  26.         }
  27.         public String judgeTriangle() {//判断是什么三角形
  28.                 StringBuilder sb = new StringBuilder(info());
  29.                 int resultEdge = judgeEdge();
  30.                 int resultAngle = judgeAngle();
  31.                 if (isTriangle()) {
  32.                         sb.append("是");
  33.                         if (judgeEdge() == 6) {
  34.                                 sb.append(valueOf(resultEdge));
  35.                         } else {
  36.                                 sb.append(valueOf(resultAngle));
  37.                                 sb.append(valueOf(resultEdge));
  38.                         }
  39.                 } else {
  40.                         sb.append("不是");
  41.                 }
  42.                 sb.append("三角形");
  43.                 return sb.toString();
  44.         }
  45.         private String valueOf(int value) {//判断结果转成文字
  46.                 String reslut = null;
  47.                 switch (value) {
  48.                 case 1:
  49.                         reslut = "锐角";
  50.                         break;
  51.                 case 2:
  52.                         reslut = "钝角";
  53.                         break;
  54.                 case 3:
  55.                         reslut = "直角";
  56.                         break;
  57.                 case 5:
  58.                         reslut = "等腰";
  59.                         break;
  60.                 case 6:
  61.                         reslut = "等边";
  62.                         break;
  63.                 default:
  64.                         reslut = "";
  65.                         break;
  66.                 }
  67.                 return reslut;
  68.         }
  69.         private int judgeEdge() {//按边判断
  70.                 int result = -1;
  71.                 if (shorter == longer) {
  72.                         result = 6;
  73.                 } else if (shorter == fit || fit == longer) {
  74.                         result = 5;
  75.                 }
  76.                 return result;
  77.         }
  78.         private int judgeAngle() {//按角判断
  79.                 int result = -1;
  80.                 int AB = shorter * shorter + fit * fit;
  81.                 int C = longer * longer;
  82.                 if (AB > C) {
  83.                         result = 1;
  84.                 } else if (AB < C) {
  85.                         result = 2;
  86.                 } else {
  87.                         result = 3;
  88.                 }
  89.                 return result;
  90.         }
  91.         private boolean isTriangle() {//判断能不能构成三角形
  92.                 int AB = shorter + fit;
  93.                 if (AB <= longer) {
  94.                         return false;
  95.                 }
  96.                 return true;
  97.         }
  98.         private String info() {//三角形信息
  99.                 StringBuilder sb = new StringBuilder();
  100.                 sb.append("三角形(").append(shorter).append(", ").append(fit).append(", ")
  101.                                 .append(longer).append(")");
  102.                 return sb.toString();
  103.         }
  104. }
复制代码
main方法类MainClass测试用
  1. package com.Lland.Triangle;

  2. public class MainClass {
  3.         public static void main(String[] args) {
  4.                 Triangle triangle = new Triangle(5, 3, 4);
  5.                 System.out.println(triangle.judgeTriangle());
  6.                 triangle = new Triangle(1, 8, 10);
  7.                 System.out.println(triangle.judgeTriangle());
  8.                 triangle = new Triangle(5, 12, 13);
  9.                 System.out.println(triangle.judgeTriangle());
  10.                 triangle = new Triangle(8, 8, 8);
  11.                 System.out.println(triangle.judgeTriangle());
  12.                 triangle = new Triangle(6, 6, 8);
  13.                 System.out.println(triangle.judgeTriangle());
  14.                 triangle = new Triangle(3, 3, 5);
  15.                 System.out.println(triangle.judgeTriangle());
  16.                 triangle = new Triangle(109, 108, 21);
  17.                 System.out.println(triangle.judgeTriangle());
  18.         }
  19. }
复制代码
运行结果:
三角形(3, 4, 5)是直角三角形
三角形(1, 8, 10)不是三角形
三角形(5, 12, 13)是直角三角形
三角形(8, 8, 8)是等边三角形
三角形(6, 6, 8)是锐角等腰三角形
三角形(3, 3, 5)是钝角等腰三角形
三角形(21, 108, 109)是锐角三角形

利用三角形特性:
设较短的边为a,较长的边为c,长度居中的边为b
1.a + b > c
2.a^2 + b^2 > c^2, 锐角三角形
   a^2 + b^2 = c^2, 直角三角形
   a^2 + b^2 < c^2, 钝角三角形
3.a = c,等边
   a != c 情况下
      a = b,钝角等腰
      b = c,锐角等腰





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2