Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fst091 en 12 de Octubre 2016, 23:06
-
El código me permite modificar un atributo inicial de las dimensiones de una caja, lo que me falta es que en caso de que ingrese una opción incorrecta que me permitiera modificar algún atributo, me pida nuevamente ingresar alguna opción correcta, intente con un do-while, pero esto medio que si lo permite, pero nunca salgo del ciclo, estoy usando netbeans, espero alguien pueda ayudarme, gracias
package Parte_III;
import java.util.Scanner;
public class Volumen_Caja_03 {
private double anchura;
private double altura;
private double profundidad;
public double Volumen() {
double volumen = anchura * altura * profundidad;
return volumen;
}
public void set_Datos(double anchura, double altura, double profundidad) {
this.anchura = anchura;
this.altura = altura;
this.profundidad = profundidad;
}
double getDatosAltura() {
return altura;
}
double getDatosAnchura() {
return anchura;
}
double getDatosProfundidad() {
return profundidad;
}
public void setDatos(String opcion, double nuevo) {
// do {
Scanner sc = new Scanner(System.in);
System.out.println("Introduce el nombre del parametro deseas modificar: ");
opcion = sc.nextLine();
switch (opcion) {
case "Anchura":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.anchura = nuevo;
break;
case "Altura":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.altura = nuevo;
break;
case "Profundidad":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.profundidad = nuevo;
break;
default:
System.out.println("Opcion invalida intentalo de nuevo");
}
//} while ( (opcion != "Anchura" || opcion != "Altura" || opcion != "Profundidad"));
}
}
class Principal_03 {
public static void main(String[] args) {
Volumen_Caja_03 Caja3 = new Volumen_Caja_03();
Caja3.set_Datos(4, 5, 3);
System.out.println("La caja inicial tiene las siguientes dimensiones: "+Caja3.getDatosAnchura()+" metros de anchura, "+Caja3.getDatosAltura()+" metros de altura, y "+Caja3.getDatosProfundidad()+" metros de profundidad");
System.out.println("El volumen de la caja inicial es de: "+Caja3.Volumen()+" metros");
System.out.println("");
Caja3.setDatos(null, 0);
System.out.println("");
System.out.println("La caja modificada tiene las siguientes dimensiones: "+Caja3.getDatosAnchura()+" metros de anchura, "+Caja3.getDatosAltura()+" metros de altura, y "+Caja3.getDatosProfundidad()+" metros de profundidad");
System.out.println("El volumen de la caja modificada es de: "+Caja3.Volumen()+" metros");
}
}
-
Buenos días.
Puedes hacerlo así:
public void setDatos(String opcion, double nuevo) {
int salir=0;
do {
Scanner sc = new Scanner(System.in);
System.out.println("Introduce el nombre del parametro deseas modificar: ");
opcion = sc.nextLine();
switch (opcion) {
case "Anchura":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.anchura = nuevo;
salir=1;
break;
case "Altura":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.altura = nuevo;salir=1;
break;
case "Profundidad":
System.out.println("Ingresa el nuevo parametro: ");
nuevo = sc.nextDouble();
this.profundidad = nuevo;salir=1;
break;
default:
System.out.println("Opcion invalida intentalo de nuevo");
}
} while ( salir==0);
Un saludo
-
Muchas gracias por ayudarme ESOJ, podrías explicarme que fue lo que hiciste?, para comprenderlo mejor, y en lo que yo estaba haciendo crees que haya alguna posibilidad de hacerlo como iba haciendo?, nuevamente gracias amigo, cuídate.
Saludos
-
Buenos días.
Lo que hice fue inicializar la variable salir antes del bucle do-while.Le di valor 0.Luego hice que el bucle se repitiera mientras salir fuera igual a 0.Con esto se repetiría infinitamente.
En el switch en los casos en que opcion es igual a Altura,Anchura o Profundidad,a la variable salir le doy 1 como valor.Asi al ser el valor de salir diferente de 0 saldremos del bucle.
En cuanto a si ibas ien como lo estabas haciendo,depende de lo que quieras que haga el programa.Yo en principio lo que tienes lo dividiría en 2 clases:
import java.util.Scanner;
public class Volumen_Caja_03 {
private double anchura;
private double altura;
private double profundidad;
public void setAltura(double altura) {
this.altura = altura;
}
public void setAnchura(double anchura) {
this.anchura = anchura;
}
public void setProfundidad(double profundidad) {
this.profundidad = profundidad;
}
public void setDatos() {
int salirDo;
int salirWhilePrincipal=0;
int salirWhile2;
while (salirWhilePrincipal==0){
do {
salirWhile2=0;
salirDo=0;
System.out.println("Introduce el nombre del parametro que deseas modificar: ");
Scanner sc = new Scanner(System.in);
String opcion = sc.nextLine();
double nuevo;
switch (opcion) {
case "Anchura":
System.out.println("Ingresa el nuevo valor para Anchura: ");
nuevo = sc.nextDouble();
this.anchura = nuevo;
salirDo=1;
break;
case "Altura":
System.out.println("Ingresa el nuevo valor para Altura: ");
nuevo = sc.nextDouble();
this.altura = nuevo;salirDo=1;
break;
case "Profundidad":
System.out.println("Ingresa el nuevo valor para Profundidad: ");
nuevo = sc.nextDouble();
this.profundidad = nuevo;salirDo=1;
break;
default:
System.out.println("Opcion invalida intentalo de nuevo");
}
} while ( salirDo==0);
while (salirWhile2==0){
System.out.println("Deseas modificar otro parametro? (S/N) ");
Scanner sr = new Scanner(System.in);
sr = new Scanner(System.in);
String respuesta = sr.nextLine();
if (respuesta.equalsIgnoreCase("s")){salirWhilePrincipal=0;salirWhile2=1;}
if (respuesta.equalsIgnoreCase("n")){salirWhilePrincipal=1;salirWhile2=1;}
}
}
}
double getAltura() {
return altura;
}
double getAnchura() {
return anchura;
}
double getProfundidad() {
return profundidad;
}
public double getVolumen() {
double volumen = anchura * altura * profundidad;
return volumen;
}
}
public class g
{
public static void main(String[] args) {
Volumen_Caja_03 Caja3 = new Volumen_Caja_03();
Caja3.setAltura(4);
Caja3.setAnchura(5);
Caja3.setProfundidad(3);
System.out.println("La caja inicial tiene las siguientes dimensiones: "+Caja3.getAnchura()+" metros de anchura, "+Caja3.getAltura()+" metros de altura, y "+Caja3.getProfundidad()+" metros de profundidad");
System.out.println("El volumen de la caja inicial es de: "+Caja3.getVolumen()+" metros");
System.out.println("");
Caja3.setDatos();
System.out.println("");
System.out.println("La caja modificada tiene las siguientes dimensiones: "+Caja3.getAnchura()+" metros de anchura, "+Caja3.getAltura()+" metros de altura, y "+Caja3.getProfundidad()+" metros de profundidad");
System.out.println("El volumen de la caja modificada es de: "+Caja3.getVolumen()+" metros");
}
}
Revisa ien el programa y si no entiendes algo me dices.
Un saludo