【问题标题】:boolean type method - Area of a Triangle布尔类型方法 - 三角形面积
【发布时间】:2015-10-25 22:30:11
【问题描述】:

如果两个较小边的总和不大于较大的边,三角形方法(在底部)应该返回字符串"Invalid"。我创建了一个布尔方法 (isValid) 来测试它,但不确定如何在三角形方法中测试它。如您所见,我将三角形方法中的第一个if 语句留空,因为我不知道要编写什么代码来实现这一点。感谢您的任何意见。

 public static void main(String[] args)
{
    String inputOne;
    String inputTwo;
    String inputThree;
    double smallSide;
    double medSide;
    double largeSide;
    double sidea = 0;
    double sideb = 0;
    double sidec = 0;
    double a;
    double b;
    double c;

    inputOne = JOptionPane.showInputDialog(null, "Enter first side: ");
    smallSide = Integer.parseInt(inputOne);

    inputTwo = JOptionPane.showInputDialog(null, "Enter second side: ");
    medSide = Integer.parseInt(inputTwo);

    inputThree = JOptionPane.showInputDialog(null, "Enter third side: ");
    largeSide = Integer.parseInt(inputThree);

    if (smallSide <= medSide && medSide <= largeSide)
    {
        sidea = smallSide;
        sideb = medSide;
        sidec = largeSide;
    } else if (medSide <= smallSide && smallSide <= largeSide)
    {
        sidea = medSide;
        sideb = smallSide;
        sidec = largeSide;

    } else if (smallSide <= largeSide && largeSide <= medSide)
    {
        sidea = smallSide;
        sideb = largeSide;
        sidec = medSide;
    } else if (medSide <= largeSide && largeSide <= smallSide)
    {
        sidea = medSide;
        sideb = largeSide;
        sidec = smallSide;
    } else if (largeSide <= smallSide && smallSide <= medSide)
    {
        sidea = largeSide;
        sideb = smallSide;
        sidec = medSide;
    } else if (largeSide <= medSide && medSide <= smallSide)
    {
        sidea = largeSide;
        sideb = medSide;
        sidec = smallSide;
    }
    a = sidec;
    b = sideb;
    c = sidea;
    JOptionPane.showMessageDialog(null, triangle(a, b, c));

    if (isValid(sidea, sideb, sidec))
    {
        JOptionPane.showMessageDialog(null, area(sidea, sideb, sidec));
    }
}
public static boolean isValid(double sidea, double sideb, double sidec)
{
    double sum;

    sum = sidea + sideb;

    if (sum <= sidec)
    {
        return false;
    }
    else;
    return true;


}


 public static double area(double sidea, double sideb, double sidec)
 {
    double s;
    double next;
    double answer;

    s = (sidea + sideb + sidec) / 2; 
    next = (s * sidea) * (s * sideb) * (s * sidec);
    answer = s * next;
    return Math.sqrt(answer);



 }

 public static String triangle(double a, double b, double c)
 {
    if ()
        return "Invalid Triangle";
    else if (a == c)
        return "Equilateral";
    else if (a == b || b == c)
        return "Isosceles";
    else 
        return "Scalene";
 }

【问题讨论】:

    标签: java methods boolean area


    【解决方案1】:

    会不会是这样的?:

     if(isValid(a,b,c)==false)
    

     if(!isValid(a,b,c)) 
    

    这基本上是在说“如果(无效)”

    【讨论】:

    • 谢谢!修复它...直到我发布后才意识到格式的外观! :)
    • 没问题。我们都去过那里:)
    • 就是这样!我只需要用 c、b 和 a 来切换 a、b 和 c,因为我将它们按升序排列,所以我被卡住了一会儿。谢谢!!
    【解决方案2】:

    我想,你只需在纸上写下这个算法,然后再写代码。 例如 1.找到最大边 2.计算其他人的总和 3.比较结果 4.显示信息 然后你就明白你要写什么了

    【讨论】:

      【解决方案3】:

      无需应用那么多 if-else 条件来排列边。您可以省略它们,也可以将您的 isValid 方法修改为:

      public static boolean isValid(double sidea, double sideb, double sidec) {
          if ((sidea + sideb > sidec) 
          && (sideb + sidec > sidea) 
          && (sidec + sidea > sideb)) {
              return true;
          }
          return false;
      }
      

      这与实现三角形中任意两条边之和总是严格大于第三条边的逻辑相同。

      现在,在方法三角形中,第一个 if 语句可以写成:

      if (!isValid(a,b,c)) {
          return "Invalid Triangle";
      }
      

      【讨论】:

        猜你喜欢
        • 2014-11-03
        • 1970-01-01
        • 2014-12-06
        • 2021-06-05
        • 2021-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-16
        相关资源
        最近更新 更多