Я вовне в курсе Java, и мое назначение - написать программу, которая занимает 3 стороны треугольника и возвращает тип, а также область. Стороны должны быть целыми числами в соответствии с листом задания, поэтому он испытывает боль, испытывая его и приходящий с целыми коэффициентами, чтобы соответствовать каждому типу.Код 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
Nice. Спасибо, это было глупо. – hunsbct
@ user3491551 Вы можете отметить отметку, если она ответит – Nabin