3 回答
TA贡献1873条经验 获得超9个赞
我很困惑,你为什么不能干脆做
if (a == b && b == c) {
JOptionPane.showMessageDialog(null,"Triangle is Equilateral");
} else if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a)) {
JOptionPane.showMessageDialog(null, "Triangle is Isosceles");
} else if (a != b && a != c && b != c){
JOptionPane.showMessageDialog(null,"Triangle is Scalene");
} else {
JOptionPane.showMessageDialog(null,"Invalid Triangle");
}
TA贡献1797条经验 获得超4个赞
实际上有2个问题。
假设 a=5、b=5 和 c=5。你的代码现在的工作方式是检查:这是真的,所以它打印“三角形是等边的”。然后它检查:这也是真的,所以它打印“三角形是等腰”。
为了防止它在找到您要查找的结果后检查下一个 if 语句,后面的所有 if 语句都必须是“else if”语句。如果上面的所有 else if 语句都是 false,则最终的 “else” 代码将运行。在你的情况下,它会运行与你的第三个陈述是假的一样长。
if (a==c)
if (a==b || b==c)
同样正如Andronicus所指出的,如果任何一侧等于另一侧,则变量a,b和c将保持为0,因为您的代码仅检查不等式
这里是排序部分的工作代码:
if(aA>=bB && aA>=cC){
a = aA;
if(bB >= cC){
b = bB;
c = cC;
} else {
b = cC;
c = bB;
}
} else if (bB >= aA && bB >= cC){
a = bB;
if(aA >= cC){
b = aA;
c = cC;
} else {
b = cC;
a = aA;
}
} else {
a = cC;
if(cC >= aA){
b = cC;
c = aA;
} else {
b = aA;
c = cC;
}
}
TA贡献1829条经验 获得超13个赞
您有三个不同的语句,分别进行评估。相反,从问题的描述来看,听起来你需要一个具有多个条件分支(即子句)的单个语句:ififelse if
if (a+b<=c)
{
JOptionPane.showMessageDialog(null,"Invalid Triangle");
} else if (a==c) {
JOptionPane.showMessageDialog(null,"Triangle is Equilateral");
} else if (a==b || b==c){
JOptionPane.showMessageDialog(null, "Triangle is Isosceles");
} else {
JOptionPane.showMessageDialog(null,"Triangle is Scalene");
}
添加回答
举报
