Java - Ayuda mi código no ejecuta bien por alguna razón

   
Vista:
Imágen de perfil de Mozzie

Ayuda mi código no ejecuta bien por alguna razón

Publicado por Mozzie (3 intervenciones) el 12/08/2017 19:03:23

MI código no ejecuta bien



La idea es hacer un programa que calcule el área de varias figuras geométricas y tiene que mostrar en pantallas las opciones como un menú, se que se puede hacer con switch pero lo quiero hacer como if y la verdad no me lo ejecuta bien, tengo un problema con la variable answer, gracias por la ayuda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package guia.pkg2;
import javax.swing.JOptionPane;
 
public class ejercicio7 {
    public static void main(String[] args) {
        double answer=0;
       String opcion= JOptionPane.showInputDialog("Seleccione el area de lo que quiere calcular\n\na. Cuadrado\nb. Triangulo rectangulo\nc. Triangulo equilatero\nd. Rombo\ne. Salir");
       if (opcion.toLowerCase().equals('a')) {
            String valor=JOptionPane.showInputDialog("Ingrese valor del lado");
            double a=Double.parseDouble(valor);
            answer = a*a;
        }else if (opcion.toLowerCase().equals('b')) {
            String valor=JOptionPane.showInputDialog("Ingrese valor de la base");
            String valor2=JOptionPane.showInputDialog("Ingrese valor de la altura");
            double a=Double.parseDouble(valor);
            double b=Double.parseDouble(valor2);
            answer = (a*b)/2;
        }else if (opcion.toLowerCase().equals('c')) {
            String valor=JOptionPane.showInputDialog("Ingrese valor de la altura");
            double a=Double.parseDouble(valor);
            answer = ((Math.sqrt(3))/2)*(a*a);
        }else if(opcion.toLowerCase().equals('d')){
            String valor=JOptionPane.showInputDialog("Ingrese valor de la diagonal mayor");
            String valor2=JOptionPane.showInputDialog("Ingrese valor de la diagonal menor");
            double a=Double.parseDouble(valor);
            double b=Double.parseDouble(valor2);
            answer = (a*b)/2;
        }else if (opcion.toLowerCase().equals('e')) {
            JOptionPane.showMessageDialog(null, "Fue un pracer calcularle sus figuras");
        }
 
   JOptionPane.showMessageDialog(null,"El total es "+answer);
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda mi código no ejecuta bien por alguna razón

Publicado por Thanatos (78 intervenciones) el 13/08/2017 07:05:11
El problema está en la variable opcion, que es de tipo String. En las condiciones de las sentencias if, la estás comparando con un dato de tipo char:

1
if (opcion.toLowerCase().equals('a'))

Podrías tomar el primer carácter del String almacenado en la variable 'opcion', para hacer la comparación:

1
if (Character.toLowerCase(opcion.charAt(0)) == 'a')

Si agregas un else al final de los else - if, te serviría para realizar alguna acción en caso de que el usuario ingrese una opción que no encuentra en el menú, de la misma manera que se utiliza el default de las sentencias switch.

La fórmula del área del triángulo equilátero tiene un pequeño error. Teniendo la altura como dato, la división debería tener como divisor un 3, en lugar de un 2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Mozzie

Ayuda mi código no ejecuta bien por alguna razón

Publicado por Mozzie (3 intervenciones) el 14/08/2017 19:47:57
Muchas gracias me sirvió tu respuesta +10
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar