Для моего задания я использую JOptionPane, чтобы попросить пользователя ввести 3 стороны треугольника. Затем программа должна использовать JOptionPane, чтобы рассказать им тип треугольника (равносторонний, правый, острый, тупый и равнобедренный, но равнобедренные треугольники также либо правильные, тупые или острые), это и рассчитать площадь.JOptionPane in if statements
Когда он равносторонний, он возвращается, говоря мне, что он равносторонний, но он также говорит мне, что он равнобедренный 3 раза. Хотя у меня есть только равнобедренные JOptionPane с другими типами треугольников.
Другая проблема заключается в том, что, когда она правильная, острая или туповатая, она пропускает JOptionPane, рассказывая мне, какой тип это и просто говорит мне, что это равнобедренные.
package assignment.ii;
import javax.swing.JOptionPane;
import java.lang.*;
public class AssignmentII
{
public static void main(String[] args) {
int a = Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter a side of the triangle "));
int b = Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter a side of the triangle "));
int c = Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter a side of the triangle "));
double s = (.5*(a+b+c));
if(a==b){
if (b==c)
JOptionPane.showMessageDialog(null, "The triangle is a equilateral triangle");
}else if (((a*a)+(b*b)) == (c*c)) {
JOptionPane.showMessageDialog(null, "The triangle is a right triangle");
if (a==b)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (b==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (a==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
}else if (((a*a)+(b*b))<(c*c)){
JOptionPane.showMessageDialog(null, "The triangle is an obtuse triangle");
if (a==b)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (b==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (a==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
}else if (((a*a)+(b*b))>(c*c))
JOptionPane.showMessageDialog(null, "The triangle is an acute triangle");
if (a==b)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (b==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
if (a==c)
JOptionPane.showMessageDialog(null, "The triangle is a Isosceles triangle");
double d;
d = ((s)*(s - a)*(s - b)*(s - c));
JOptionPane.showMessageDialog(null, "The area of the triangle is: " + Math.sqrt(d));
}
}
В вашем самом последнем 'else if' отсутствуют оба фигурных скобки. Когда 'a == b', но' b! = C', ничего не будет проанализировано. –
** FYI **: Вам ** не нужно «импортировать java.lang. *;» В ваш код, как это будет сделано компилятором в любом случае. –
Принимаете ли вы, что третья запись (c) является гипотенузой? Возможно, вам придется изучить входные данные, чтобы определить, какой из них является самым большим, прежде чем проверять его против теоремы о пифагоре. – crig