Autor Tema: Validación de datos en Java Condiciones en un do-while código ejemplo  (Leído 7667 veces)

fst091

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
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


Código: [Seleccionar]
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");
    }
}
« Última modificación: 19 de Octubre 2016, 20:47 por Alex Rodríguez »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Condiciones en un do-while en Java
« Respuesta #1 en: 13 de Octubre 2016, 06:46 »
Buenos días.

Puedes hacerlo así:

Código: [Seleccionar]
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

fst091

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re:Condiciones en un do-while en Java
« Respuesta #2 en: 13 de Octubre 2016, 19:36 »
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

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Condiciones en un do-while en Java
« Respuesta #3 en: 14 de Octubre 2016, 08:50 »
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:

Código: [Seleccionar]
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;
    }
}


Código: [Seleccionar]
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".