当前位置: 首页 > 知识库问答 >
问题:

确定三角形类型的程序中If语句工作不正常

辛弘壮
2023-03-14

我有一个任务,要编写一个程序,该程序使用triangleType方法,我必须编写该方法,从用户那里获取三个int输入并输出三角形类型。在该方法中,我首先需要按升序对整数排序,以便我需要使用的比较能够正常工作。我知道我正确地完成了代码中的排序部分,因为我甚至在开始尝试确定三角形类型之前就对其进行了测试。我需要使用这些比较来找到三角形类型:“如果A B

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;
            }
        }
        if (cC > aA && cC > bB)
        {
            if (aA > bB)
            {
              a = bB;
              b = aA;
              c = cC;
            }
            else if (bB > aA)
            {
              a = aA;
              b = bB;
              c = cC;
            }
        }

        if (a+b<=c)
        {
            JOptionPane.showMessageDialog(null,"Invalid Triangle");
        } if (a==c) {
               JOptionPane.showMessageDialog(null,"Triangle is Equilateral"); 
        } if (a==b || b==c){
                JOptionPane.showMessageDialog(null, "Triangle is Isosceles");
        } 
        else {
            JOptionPane.showMessageDialog(null,"Triangle is Scalene");
        }    
    }
}

共有3个答案

全鸿晖
2023-03-14

实际上有两个问题。

  1. Let's say a=5, b=5, and c=5. The way your code is working right now it checks:
    if (a==c)
    
    if (a==b || b==c)
    
    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;
        }
    }
    

宋高谊
2023-03-14

我很困惑,你为什么不能

        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");
        }
施阳夏
2023-03-14

这里有三个不同的if语句,分别进行计算。相反,从问题的描述来看,听起来您需要一个带有多个条件分支的if语句(即,else 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");
}    
 类似资料:
  • 我正试图通过api创建一个新任务。 电话是: Curl-umy_token:https://app.asana.com/api/1.0/tasks-d"name=demo_task"-d"workspace=875236917006" 以下是回应: {“错误”:[{“消息”:“工作区:类型不正确”}]} 我哪里错了?

  • 我有一个问题。我写了代码,需要指出数组的元素比数组的下一个元素大。您可以在输出图片上看到数组$arr应该只包含元素70,因为

  • 打开和关闭连接: 注册用户 错误消息 '/'应用程序中的服务器错误。 INSERT INTO语句中存在语法错误。 描述:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的起源的更多信息。 异常详细信息:系统。数据。OleDb。OleDbException:INSERT INTO语句中的语法错误。 源错误: 第100行:命令。ExecuteNonQuery();第1

  • 假设您有一个二进制文件,其中包含类型为int或double的数字。您不知道文件中数字的顺序,但它们的顺序记录在文件开头的字符串中。字符串由表示int的字母i和表示double的字母d组成,按后续数字类型的顺序排列。字符串是使用writeUTF方法写入的。 例如,字符串“iddiiddd”表示该文件包含八个值,如下所示:一个整数,后跟两个双精度,后跟两个整数,后跟三个双精度。 我的问题是,如果字符串

  • 我们的OOP老师给我布置了一个作业。虽然我的代码看起来很好,但我仍然面临这个问题。 我必须从用户那里获取三角形顶点的坐标,并且必须判断它是否是一个r直角三角形。所以我简单地用毕达哥拉斯定理来求它,我们都知道用条件:h*h=b*b+p*p 但令人惊讶的是,这对某些特定的直角三角形不起作用。这里有一个这样的三角形: 顶点A:(x,y)=(1,3) 顶点B:(x,y)=(1,1) 顶点C:(x,y)=(

  • 我有一个问题,比较布尔值的if语句不起作用。最后一个if语句,其中notifFlag==true,如果我将它放在那里,它就不起作用了。日志显示notifFlag设置为true,但if语句未运行。但是,如果删除notifFlag==true,则if语句将运行。 带有标志得日志: 没有标志得日志: