我正在介紹Java課程,我的任務是編寫一個程序,該程序需要在三角形的三邊並返回類型以及區域。雙方必須根據作業單是整數,所以它被證明是一個痛苦的測試它,並提出整數比率來匹配每種類型。Java代碼爲三角形區域返回0
無論如何,我遇到的真正問題是它有時會給我正確的區域,有時它不會。例如6/8/10返回面積爲0.
任何想法/一般提示,以改善源?到目前爲止,我看起來像意大利麪條,但我有點受限,因爲我只允許使用我們到目前爲止所講的內容。
package trianglesides;
import javax.swing.*;
/*
This program will receive three numbers from a user describing the lengths of
the sides of a triangle. It will return and display the type of triangle and
the area.
*/
public class triangle_Sides {
public static void main(String[] args) {
int side1 = Integer.parseInt(JOptionPane.showInputDialog
("Enter the integer length of side 1"));
int side2 = Integer.parseInt(JOptionPane.showInputDialog
("Enter the integer length of side 2"));
int side3 = Integer.parseInt(JOptionPane.showInputDialog
("Enter the integer length of side 3"));
int s = (side1 + side2 + side3)/2;
double area = Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));
if (side1 >= (side2 + side3) ||
side2 >= (side1 + side3) ||
side3 >= (side1 + side2)) {
JOptionPane.showMessageDialog(null, "That's no triangle.");
}
else {
/*Equilateral*/
if ((side1 == side2) && (side2 == side3)) {
JOptionPane.showMessageDialog(null, "This is an equilateral triangle with an area of " + area);
}
/*Right and isosceles*/
else if ((side1*side1) == ((side2*side2) + (side3*side3)) ||
(side2*side2) == ((side1*side1) + (side3*side3)) ||
(side3*side3) == ((side2*side2) + (side1*side1))) {
if (side1 == side2 ||
side2 == side3 ||
side3 == side1){
JOptionPane.showMessageDialog(null, "This is right and isosceles triangle with an area of " + area);
}
else {
JOptionPane.showMessageDialog(null, "This is a right triangle with an area of " + area);
}
}
/*Obtuse and isosceles*/
else if ((side1*side1) > ((side2*side2) + (side3*side3)) ||
(side2*side2) > ((side1*side1) + (side3*side3)) ||
(side3*side3) > ((side2*side2) + (side1*side1))) {
if (side1 == side2 ||
side2 == side3 ||
side3 == side1){
JOptionPane.showMessageDialog(null, "This is obtuse and isosceles triangle with an area of " + area);
}
else {
JOptionPane.showMessageDialog(null, "This is an obtuse triangle with an area of " + area);
}
}
/*Acute and isosceles*/
else if ((side1*side1) < ((side2*side2) + (side3*side3)) ||
(side2*side2) < ((side1*side1) + (side3*side3)) ||
(side3*side3) < ((side2*side2) + (side1*side1))) {
if (side1 == side2 ||
side2 == side3 ||
side3 == side1){
JOptionPane.showMessageDialog(null, "This is acute and isosceles triangle with an area of " + area);
}
else {
JOptionPane.showMessageDialog(null, "This is an acute triangle with an area of " + area);
}
}
}
}
}
對不起,但我不能讓你 – Nabin 2014-09-22 16:46:59
不錯。謝謝,那對我來說很愚蠢。 – hunsbct 2014-09-23 16:12:14
@ user3491551如果答案爲 – Nabin 2014-09-23 16:12:57