elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con bucle while junto con condiciones if
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con bucle while junto con condiciones if  (Leído 1,720 veces)
Runforyourlife

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Problema con bucle while junto con condiciones if
« en: 2 Diciembre 2016, 22:21 pm »

Tengo un problema que yo creo que cualquier programador intermedio lo puede solucionar. El caso es que tengo un bucle while en el que si pongo en el input (por ejemplo) "suma" y añado los números se realiza la resta pero después vuelve a ejecutarse el while y sale como si hubiera puesto después nada en el input y me sale el error (y después, obviamente, se vuelve a ejecutar).


Código:
    import java.util.Scanner;
   
    public class MainClass {
    public static void main(String[] args){
   
    Scanner scan = new Scanner(System.in);
   
    System.out.println("\tCalculadora");
    System.out.println("--------------------------");
   
   
    int condicion = 1;
    while(condicion == 1){
   
    System.out.println("¿Qué operación desea realizar?");
    System.out.println("Suma");
    System.out.println("Resta");
    System.out.println("Salir");
   
    String operacion = scan.nextLine();
   
    if(operacion.toLowerCase().equals("suma")){
    System.out.println("Introduce los números que quieres sumar");
   
    System.out.println("Número 1: ");
    double numero1 = scan.nextDouble();
   
    System.out.println("Número 2: ");
    double numero2 = scan.nextDouble();
   
    Suma suma = new Suma(numero1, numero2);
   
    System.out.println("Resultado: " + suma.getSuma());
   
    }else if(operacion.toLowerCase().equals("resta")){
    System.out.println("Introduce los números que quieres restar");
   
    System.out.println("Número 1: ");
    double numero1 = scan.nextDouble();
   
    System.out.println("Número 2: ");
    double numero2 = scan.nextDouble();
   
   
    Resta resta = new Resta(numero1, numero2);
   
    System.out.println("Resultado: " + resta.getResta());
   
    }else if(operacion.toLowerCase().equals("salir")){
    System.out.println("¡Adiós! ;)");
    condicion = 0;
   
   
    }else{
    System.out.println("Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo");
    }
    }
    }
    }


Por consola:
           Calculadora
    --------------------------
    ¿Qué operación desea realizar?
    Suma
    Resta
    Salir
    SUMA (input)
    Introduce los números que quieres sumar
    Número 1:
    1 (input)
    Número 2:
    1 (input)
    Resultado: 2.0
    ¿Qué operación desea realizar?
    Suma
    Resta
    Salir
    Error: Puede ser que hayas escrito mal la palabra. Vuelve a intentarlo
    ¿Qué operación desea realizar?
    Suma
    Resta
    Salir

Si necesitáis las otras dos clases os las envio, pero creo que no hace falta, por eso no las añado.


¡Saludos! ;)




En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Problema con bucle while junto con condiciones if
« Respuesta #1 en: 3 Diciembre 2016, 00:18 am »

Después de pedir un número se guarda un salto de linea en el buffer y antes de pedir una nueva linea hay que limpiarlo:

Código
  1. scan.nextLine();
  2. String operacion = scan.nextLine();

Pero en ese caso hay que ver si antes se ha ingresado un número, o mejor limpiarlo después de ingresar el número:

Código
  1. double numero2 = scan.nextDouble();
  2. scan.nextLine();

pero no es necesario porque solo quieres leer una palabra y basta con:

Código
  1. String operacion = scan.next();

Saludos  ;D


« Última modificación: 3 Diciembre 2016, 00:24 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Runforyourlife

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re:
« Respuesta #2 en: 3 Diciembre 2016, 00:30 am »

¡Graciaaas! ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con bucle While en vb 6.0
Programación Visual Basic
merlin 2 2,512 Último mensaje 14 Abril 2007, 02:39 am
por Sancho.Mazorka
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,237 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
problema al instalar backtrack junto a windows xp
GNU/Linux
sub-slfredo 1 2,230 Último mensaje 17 Abril 2013, 20:12 pm
por ovalencia
Problema instalando Linux junto Windows 8.1 [Laptop HP] « 1 2 »
GNU/Linux
Noxware 16 8,710 Último mensaje 9 Enero 2015, 17:43 pm
por Noxware
problema virtual box condiciones kali linux
GNU/Linux
crackenstain 3 2,611 Último mensaje 12 Septiembre 2015, 18:09 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines