您的位置:首页 > 编程语言 > Java开发

课堂在线Java程序设计 类的继承 编程题2

2017-08-18 18:43 351 查看
图形面积计算
我们有一些图形的边长数据,这些图形包括三角新和矩形,请你编写一个程序求出它们的面积。 

请你实现一个基础图形类Graph,然后实现三角形类Triangle和矩形类Rectangle,继承自Graph。根据输入的边数实现不同的对象,并计算面积。

输入格式:

一行,一个整数n,表示图形个数。

n行,每行是用空格隔开的整数。

输出格式:

n行,每行是一个图形的面积。

输入样例:

2

5 5

6 6 6

输出样例:

25

15import java.util.*;

public class Main {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int number = Integer.parseInt(in.nextLine());
String[] str = new String[number];
for (int i = 0; i < number; i++) {
str[i] = in.nextLine();
}
for (int n = 0; n < number; n++) {
String[] temp = str
.split(" ");

if (temp.length == 2) {
int[] side = new int[2];
for (int m = 0; m < 2; m++) {
side[m] = Integer.parseInt(temp[m]);
}
Rectangle rectangle = new Rectangle();
rectangle.setside(side);
System.out.println(rectangle.average());
}
if (temp.length == 3) {
int[] side = new int[3];
for (int m = 0; m < 3; m++) {
side[m] = Integer.parseInt(temp[m]);
}
Triangle triangle = new Triangle();
triangle.setside(side);
if (triangle.triangletorf(side[0], side[1], side[2])) {
System.out.println(triangle.average());
}
}
}
}

}

class Graph {
int[] side;

public int[] getside() {
return this.side;
}

}

class Triangle extends Graph {

public int[] setside(int[] side) {
return this.side = side;
}

public int average() {
int avg = 0;
double s=(side[0]+side[1]+side[2])/2.0;
avg = (int) Math.floor(Math.sqrt(s*(s-side[0])*(s-side[1])*(s-side[2])));
return avg;
}
public boolean triangletorf(int i1, int i2, int i3) {
if (i1 + i2 < i3 || i1 + i3 < i2 || i2 + i3 < i1) {
return false;
}
return true;
}

}

class Rectangle extends Graph {

public int[] setside(int[] side) {
return this.side = side;
}

public int average() {
int avg = 0;
avg = (int) Math.floor(this.side[0] * this.side[1]);
return avg;
}

}

各位小伙伴最容易出错的地方就是在计算S的值得时候,除的是2,不是2.0,必须是2.0,不然会丢失精度,丢失了精度只能得10分~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: