☜贼鸡儿菜!
2020-03-16 13:30
采纳率: 100%
浏览 542
已采纳

java萌新求助(三角形形状判断问题有个测试点死活过不了)

输入格式:
在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为[1,200]。

输出格式:
(1)如果输入数据非法,则输出“Wrong Format”; (2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”; (3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”; (3)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”; (5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”; (6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”; (7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。

import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
float a=sc.nextFloat(),b=sc.nextFloat(),c=sc.nextFloat();
if(a>=1&&a<=200&&b>=1&&b<=200&&c>=1&&c<=200)
{
if(a+b>c&&a+c>b&&c+b>a)
{
if(a==b&&b==c)
System.out.println("Equilateral triangle");

                else if((a==c||b==c||a==b)&&(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a))
                System.out.println("Isosceles right-angled triangle");

                else if(a==c||b==c||a==b)
                System.out.println("Isosceles triangle");

                else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
                System.out.println("Right-angled triangle");

                else
                System.out.println("General triangle");
            }
            else
                System.out.println("Not a triangle");
        }
    else
        System.out.println("Wrong Format");
}

}
跪求大佬们指出小弟的问题所在

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • console.log( ) 2020-03-16 13:47
    已采纳

    我建议你先把三条边从小到大排序,这样代码简洁点
    假如 abc 从小到大
    一般三角形 a+b>c 这是大前提条件
    等边三角形 a==b==c
    等腰直角三角形a==b a*a+b*b==c*c
    等腰三角形 a==b
    直角三角形 a*a+b*b==c*c

    已采纳该答案
    打赏 评论
  • LitlByLitl 2020-05-11 00:29

    楼主你好,时间这么久不知道你解决了没有。那个过不了的测试用例其实是等腰直角三角形,因为直角边和斜边满足根2倍数关系,根2是无限小数,所以老师在给用例的时候无法给出一个准确值,因此不能用平方和的方法判断。应该用直角边的根2倍与斜边的差值绝对值是否足够小(我用的是是否小于0.1)。所以是在做不出来的时候可以从出题者角度思考问题,或许会有收获。很多牵扯到无限小数的场景,都会用差值绝对值是否小于某个值来近似看做相等,这也是一种重要的编程思想。

    1 打赏 评论
  • kikisang 2020-03-16 14:36

    哪个测试点过去?至少你得给出你测试过不去的数据吧?

    打赏 评论
  • 再努力一点吧! 2020-06-21 13:37

    是不是等腰三角形的原因啊

    打赏 评论
  • qq_15682815 2020-03-16 13:50

    哪个测试点过不去?

    1 打赏 评论

相关推荐 更多相似问题