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");
}
添加回答
舉報