[?] Código no tira resultados correctos

Iniciado por Run.EXE, 18 Agosto 2012, 20:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Run.EXE

Estimados, resulta que estoy aprendiendo a usar JOptionPane, junto con switch y otras cositas. Bueno, estuve haciendo un programa para calcular operaciones básicas de geometría, pero a pesar de que no logro visualizar error alguno, no me arroja resultados correctos para cada dato.  Acá dejo el código para que lo vean (ojo, no está terminado un caso, pero están las operaciones que corresponden y las que sin embargo no me dan los resultados correspondientes:

[spoiler]package geometriabasica;
import javax.swing.*;
import java.awt.*;
import java.lang.Math.*;
/**
* @author Run.EXE
*/
public class GeometriaBasica {
    public static void main(String[] args) {
        int a;
        String opcion;
        opcion = JOptionPane.showInputDialog("Ingrese figura a calcular:\n"+"1-Rectángulo\n"+"2-Círculo\n"+"0-Salir");
        a=Integer.parseInt(opcion);
        switch(a){
           
            case(1):{
               
                String x;
                int c;
                x = JOptionPane.showInputDialog("Ingrese dato a calcular:\n"+"1-Perímetro\n"+"2-Área");
                c = Integer.parseInt(x);
                    switch(c){
                       
                        case(1):{
                            JOptionPane.showInputDialog("Ingrese largo del rectángulo:");
                            double largo;
                            largo=Double.parseDouble(x);
                            JOptionPane.showInputDialog("Ingrese ancho del rectángulo:");
                            double ancho;
                            ancho = Double.parseDouble(x);
                            double perimetro;
                            perimetro=(largo*2)+(ancho*2);
                            JOptionPane.showMessageDialog(null, "El perimetro del rectángulo es: " +perimetro);
                        }break;
                        case(2):{
                           
                            JOptionPane.showInputDialog("Ingrese largo del rectángulo:");
                            double largo;
                            largo=Double.parseDouble(x);
                            JOptionPane.showInputDialog("Ingrese ancho del rectángulo:");
                            double ancho;
                            ancho = Double.parseDouble(x);
                           
                            double area;
                            area = largo*ancho;
                            JOptionPane.showMessageDialog(null, "El área del rectángulo es: "+area);
                        }break;
                    }
                   
            }break;
               
               
            case(2):{
               
                String x;
                int c;
                x=JOptionPane.showInputDialog("Ingrese dato a calcular\n"+"1-Perimetro\n"+"2-Area");
                c=Integer.parseInt(x);
                    switch(c){
                        case(1):{
                            double radio;
                            JOptionPane.showInputDialog("Ingrese radio: ");
                            radio=Double.parseDouble(x);
                            double PI;
                            PI = 3.1415;
                            double perimetro;
                            perimetro = 2*PI*radio;
                            JOptionPane.showMessageDialog(null, "El perimetro de la figura es: " +perimetro);
                        }break;
                        case(2):{
                            double radio;
                            JOptionPane.showInputDialog("Ingrese radio: ");
                            radio=Double.parseDouble(x);
                            double PI = 3.1415;
                            double area = PI*radio*radio;
                            JOptionPane.showMessageDialog(null, "El area de la figura es: " +radio);
                        }break;
                        default: JOptionPane.showMessageDialog(null, "Ingrese una opcion válida");
                    }
               
               
            }break;
               
               
            case(0):{
               
            }break;
            default: JOptionPane.showMessageDialog(null, "Ingrese una opcion válida");
        }
       
    }
}
[/spoiler]

Muchas gracias de antemano a quién me pueda ayudar :3

horny3

Hola

Tu error esta en "x", por eso sales 100pre el valor de "4.00"
Código (java) [Seleccionar]


String opcion;
        opcion = JOptionPane.showInputDialog("Ingrese figura a calcular:\n"+"1-Rectángulo\n"+"2-Círculo\n"+"0-Salir");
        a=Integer.parseInt(opcion);
        switch(a){

            case(1):{

                String x; //declaras la variable
                int c;
                x = JOptionPane.showInputDialog("Ingrese dato a calcular:\n"+"1-Perímetro\n"+"2-Área"); //la parte \n"+"1 sta de mas puede ser \n 1-Perimetro
                c = Integer.parseInt(x); // le das a c el valor de x=1 (ejemplo)
                    switch(c){

                        case(1):{
                            JOptionPane.showInputDialog("Ingrese largo del rectángulo:");
                            double largo;
                            largo=Double.parseDouble(x);//x sigue valiendo 1, no recepcionas el valor del joption :D
                            JOptionPane.showInputDialog("Ingrese ancho del rectángulo:");
                            double ancho;
                            ancho = Double.parseDouble(x); // x sigue valiendo 1, no recepcionas el valor del joption :D
                            double perimetro;
                            perimetro=(largo*2)+(ancho*2); // 1*2+1*2 --> usas x
                            JOptionPane.showMessageDialog(null, "El perimetro del rectángulo es: " +perimetro);
                        }break;


Te paso la solucion

Código (java) [Seleccionar]

int a;
        String opcion;
        opcion = JOptionPane.showInputDialog("Ingrese figura a calcular: \n 1-Rectángulo \n 2-Círculo\n 0-Salir");
        a=Integer.parseInt(opcion);
        switch(a)
        {

            case(1):
            {
                String x;
                int c;
                x = JOptionPane.showInputDialog("Ingrese dato a calcular: \n 1-Perímetro \n 2-Área");
                c = Integer.parseInt(x);
                    switch(c)
                    {

                        case 1:
                            String largo,ancho;
                            double perimetro;
                            largo=JOptionPane.showInputDialog("Ingrese largo del rectángulo:");
                            ancho= JOptionPane.showInputDialog("Ingrese ancho del rectángulo:");                           
                            perimetro=2*Double.valueOf(largo)+2*Double.valueOf(ancho);
                            JOptionPane.showMessageDialog(null, "El perimetro del rectángulo es: " +perimetro);
                       
                        break;
                        case 2:
                            largo=JOptionPane.showInputDialog("Ingrese largo del rectángulo:");
                            ancho=JOptionPane.showInputDialog("Ingrese ancho del rectángulo:");
                            double area;
                            area = Double.valueOf(largo)*Double.valueOf(ancho);
                            JOptionPane.showMessageDialog(null, "El área del rectángulo es: "+area);

                        break;
                    }

            }break;


Salu2
Observo, analizo y callo mientras me voy decepcionando en silencio.

Run.EXE

Muchas gracias por responder, creo que debo practicar más el ingreso de datos con el JOptionPane :3

Debci