为了账号安全,请及时绑定邮箱和手机立即绑定

如果语句在程序中无法正常工作以确定三角形类型

如果语句在程序中无法正常工作以确定三角形类型

慕的地6264312 2022-09-07 16:30:03
我有一个任务来编写一个程序,该程序使用我必须编写的方法triangleType,以便从用户那里获取三个int输入并输出三角形类型。在该方法中,我首先需要按升序对整数进行排序,以便我需要使用的比较能够正常工作。我知道我在代码中正确地完成了排序部分,因为我在开始尝试确定三角形类型之前就对其进行了测试。我需要使用这些比较来找到三角形类型:“如果A + B<= C,那么边不代表有效的三角形。如果 A = C(所有边的长度必须相同),则三角形为等边。如果 A = B 或 B = C,则三角形为等腰;否则三角形是SCALENE“由于某些原因,我在triangleType方法末尾的if语句无法正常工作,并且我得到了各种输出,包括”无效三角形“以及其他输出,无论我输入的整数如何。package trianglemethod;import javax.swing.JOptionPane;public class TriangleMethod{    public static void main(String[] args)    {        String wordaA, wordbB, wordcC, answer;        do         {           System.out.println("Please enter all 3 side lengths of the triangle in any order.");           wordaA = JOptionPane.showInputDialog("Enter side 1:");           wordbB = JOptionPane.showInputDialog("Enter side 2:");           wordcC = JOptionPane.showInputDialog("Enter side 3:");           int aA = Integer.parseInt(wordaA);           int bB = Integer.parseInt(wordbB);           int cC = Integer.parseInt(wordcC);           triangleType(aA,bB,cC);           System.out.println("Would you like to enter another triangle?");           answer = JOptionPane.showInputDialog("Would you like to enter another triangle?");        } while (answer.equalsIgnoreCase("yes"));    }    static void triangleType(int aA, int bB, int cC) {        int a=0, b=0, c=0;        if (aA > bB && aA > cC)        {            if (bB > cC)            {              a = cC;              b = bB;              c = aA;            }            else if (cC > bB)            {              a = bB;              b = cC;              c = aA;            }        }        if (bB > aA && bB > cC)        {            if (aA > cC)            {              a = cC;              b = aA;              c = bB;            }            else if (cC > aA)            {              a = aA;              b = cC;              c = bB;            }        }
查看完整描述

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");

        }


查看完整回答
反对 回复 2022-09-07
?
繁星coding

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;

    }

}


查看完整回答
反对 回复 2022-09-07
?
烙印99

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");

}    


查看完整回答
反对 回复 2022-09-07
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号