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
Hola
Tu error esta en "x", por eso sales 100pre el valor de "4.00"
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
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
Muchas gracias por responder, creo que debo practicar más el ingreso de datos con el JOptionPane :3
El mensaje '[?] Código no tira resultados correctos (http://foro.elhacker.net/index.php?topic=369345)' fue bloqueado
Caso cerrado
Leer reglas:
http://foro.elhacker.net/reglas