import java.util.Scanner;
public class HomeWork2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入三条边的数据并以空格分开");
//定义三角形三个边并通过输入获取数据
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
if (a != 0 && b != 0 && c != 0 && (a + b) > c) {
System.out.println("三角形成立");
//定义面积area
int p = (a + b + c) / 2;
int temp = p * (p - a) * (p - b) * (p - c);
double area = Math.sqrt(temp);
//*******************************************************************************************
if (a * a + b * b > c * c) {
System.out.println("此三角形为锐角三角形,面积为:" + area);
} else if (a * a + b * b < c * c) {
System.out.println("此三角形为钝角三角形,面积为:" + area);
} else if (a * a + b * b == c * c) {
System.out.println("此三角形为直角三角形,面积为:" + area);
}
} else {
System.out.println("你输入的三条边无法构成三角形");
}
}
}
为啥三角形三边为4 6 9时面积输出为0.0
值为0 上边 int p = (a + b + c) / 2; 19/2=9 ,要么就都换成double
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入三条边的数据并以空格分开");
//定义三角形三个边并通过输入获取数据
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
if (a != 0 && b != 0 && c != 0 && (a + b) > c) {
System.out.println("三角形成立");
//定义面积area
double p = (a + b + c) / 2.0;
double temp = p * (p - a) * (p - b) * (p - c);
double area = Math.sqrt(temp);
//*******************************************************************************************
if (a * a + b * b > c * c) {
System.out.println("此三角形为锐角三角形,面积为:" + area);
} else if (a * a + b * b < c * c) {
System.out.println("此三角形为钝角三角形,面积为:" + area);
} else if (a * a + b * b == c * c) {
System.out.println("此三角形为直角三角形,面积为:" + area);
}
} else {
System.out.println("你输入的三条边无法构成三角形");
}
}
abc你不排序直接比较吗
你可以看一下你4 6 9 相加除以3 最后得到的平均数结果为9 在temp计算时 出现了9-9结果为0乘与任何数都是0最后给到temp里结果是0 所以最后结果为0
你要计算平均数可以用(a+b+c)/2.0并且用double类型接受 这样得到的平均数更精确结果不会为9