我最近设计了一个程序,用它们的边长来识别三角形的种类。 它们是等边三角形,等腰三角形。我有一个问题 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的新手。
感谢您的进步。
答案 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
方法会使你的意图更加明显,并且你的代码比扩展的布尔表达式更清晰。