(100/100 分数)
图形面积计算
我们有一些图形的边长数据,这些图形包括三角新和矩形,请你编写一个程序求出它们的面积。
请你实现一个基础图形类Graph,然后实现三角形类Triangle和矩形类Rectangle,继承自Graph。根据输入的边数实现不同的对象,并计算面积。
输入格式:
一行,一个整数n,表示图形个数。
n行,每行是用空格隔开的整数。
输出格式:
n行,每行是一个图形的面积。
输入样例:
2
5 5
6 6 6
输出样例:
25
15
Java:
//各位小伙伴最容易出错的地方就是在计算S的值得时候,除的是2,不是2.0,必须是2.0,不然会丢失精度,丢失了精度只能得10分
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = Integer.parseInt(sc.nextLine());
for (int i = 0; i != N; ++i)
{
String[] sData = sc.nextLine().trim().split(" ");
if (sData.length == 2)
{
System.out.println((new Rectangle(sData)).getArea());
}
else
{
System.out.println((new Triangle(sData)).getArea());
}
}
sc.close();
}
}
abstract class Graph
{
public String[] sData;
Graph(String[] sData)
{
this.sData = sData;
}
public abstract int getArea();
}
class Rectangle extends Graph
{
Rectangle(String[] sData)
{
super(sData);
}
public int getArea()
{
int a = Integer.parseInt(sData[0]);
int b = Integer.parseInt(sData[1]);
return a * b;
}
}
class Triangle extends Graph
{
Triangle(String[] sData)
{
super(sData);
}
public int getArea()
{
int a = Integer.parseInt(sData[0]);
int b = Integer.parseInt(sData[1]);
int c = Integer.parseInt(sData[2]);
double p = (a + b + c) / 2.0;
return (int)Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
}