Java:如何为isos的方面创造一个条件。三角形但不平等。三角形

时间:2015-01-15 05:33:56

标签: java

我最近设计了一个程序,用它们的边长来识别三角形的种类。 它们是等边三角形,等腰三角形。我有一个问题 isos的不同条件。和平等。三角:

     if((AB==BC) ^ (BC==AC) ^ (AB==AC) && triInequality) {
     System.out.println(triCon + "ABC is an Isosceles Triangle");
     } else if(AB==BC && AB==AC && AC==BC && triInequality) {
           System.out.println(triCon + "ABC is an Equilateral Triangle");

请帮帮我!我是编程Java的新手。

感谢您的进步。

4 个答案:

答案 0 :(得分:0)

这应该对你有用

  if (((AB == BC) && (AB != AC)) ||
      ((AB == AC) && (AB != BC)) ||
      ((BC == AC) && (BC != AB))){
 System.out.println(triCon + "ABC is Isosceles Triangle");
  }
  else if(((AB == BC) && (AB == AC))  {
     System.out.println(triCon + "ABC is an equilateral Triangle");
  }

答案 1 :(得分:0)

如果三面都相等,则为equilateral。如果只有两个边是相等的那么它是isosceles

 if((AB==BC) && (BC==AC)) 
 {
       System.out.println("ABC is an Equilateral Triangle");
 }
 else if(AB==BC || AB==AC || AC==BC) 
 {
       System.out.println("ABC is an Isosceles Triangle");
 }

答案 2 :(得分:0)

你应该重新排序你的if else条件

if(AB==BC && AB==AC && AC==BC && triInequality) {
           System.out.println(triCon + "ABC is an Equilateral Triangle");
} else if((AB==BC) ^ (BC==AC) ^ (AB==AC) && triInequality) {
     System.out.println(triCon + "ABC is an Isosceles Triangle");
}

顺便说一下变量triInequality是什么?

答案 3 :(得分:0)

你可以通过将你的边长度封装在Triangle类中来使这个更加整洁:

class Triangle {
    private final List<Integer> sides;
    public Triangle(int ab, int bc, int ca) {
        sides = Arrays.toList(ab, bc, ca);
    }
    private int countMatchingSides() {
        return sides.stream()
            .mapToInt(side -> Collections.frequency(sides, side))
            .max();
    }
    public boolean isEquilateral() {
        return countMatchingSides() == 3;
    }
    public boolean isIsosceles() {
        return countMatchingSides() == 2;
    }
}

然后你可以测试:

Triangle tri = new Triangle(4, 5, 6);
if (tri.isEqualateral()) {
    ...
}

我相信实现countMatchingSides方法会使你的意图更加明显,并且你的代码比扩展的布尔表达式更清晰。