Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Aprendiendo JAVA desde cero - Error con bucle while

Estas en el tema de Aprendiendo JAVA desde cero - Error con bucle while en el foro de Java en Foros del Web. Buenos dias, recien estoy aprendiendo programación orientada a objetos y estoy con un manual de Java. Estoy tratando de entender a medida que leo y ...
  #1 (permalink)  
Antiguo 03/09/2014, 11:21
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Aprendiendo JAVA desde cero - Error con bucle while

Buenos dias, recien estoy aprendiendo programación orientada a objetos y estoy con un manual de Java.

Estoy tratando de entender a medida que leo y practico los ejemplos del texto y me encontre con algo que en "teoria" esta bien (al menos esta igual que en el ejemplo) pero que no parece funcionar como debería-



Cabecera y definiciones
Código:
package calcu;
import java.util.*;

public class Calcu {

 
    public static void main(String[] args) {
        
        int max = Integer.MIN_VALUE; 
        int dato;
        boolean hubo =false;
        String resp;
        Scanner input = new Scanner(System.in);
Ahora paso a pedir datos en la pantalla y espero la respuesta

Código:
       
        System.out.println("Quiere ingresar algo?");
        resp = input.nextLine();
Evaluo si la respuesta es "S", mientras resp sea igual a S entonces ejecuto el bucle, el cual pide un dato numerico, compara si dato > max y lo asigna a la variable dato.

Luego pregunta "maas datos?" y deberia leer nuevamente la siguiente entrada del usuario para volver a evaluar si resp es igual a S para volver a ejecutar el bucle o en caso contrario mostrar el valor.

Código:
      
        while (resp.equals("S")){
            hubo = true;
            System.out.println("Ingrese un dato");
            dato = input.nextInt();
            if (dato > max) {
                max = dato;
            }
            System.out.println("mas datos?");
            resp = input.nextLine();
            
        }
 
        if (hubo) {
            System.out.println("Maximo vale" + max);
            
        } else {
            System.out.println("No hubo datos");
        }
        
        input.close();
    }
    
}
El programa se ejecuta pero solo pide el dato una vez y muestra el valor

Cita:

run:
Quiere ingresar algo?
S
Ingrese un dato
5
mas datos?
Maximo vale5
BUILD SUCCESSFUL (total time: 5 seconds)
Seguramente es una tontería pero le estoy dando vueltas hace un rato, soy muy novato en programacion y es la primera vez que me pongo a aprender Java
  #2 (permalink)  
Antiguo 03/09/2014, 13:18
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Aprendiendo JAVA desde cero - Error con bucle while

Buenas,

El problema es que el nextInt() lee el numero y se deja el salto de linea (\n) y cuando haces el nextLine() siguiente interpreta este salto de linea como el input.

Yo en tu lugar utilizaria siempre el nextLine() para la entrada de datos. En tu caso bastaria con hacer:

dato = Integer.parseInt(input.nextLine());


Código Java:
Ver original
  1. package calcu;
  2. import java.util.*;
  3.  
  4. public class Calcu {
  5.  
  6.  
  7.     public static void main(String[] args) throws NumberFormatException{
  8.        
  9.         int max = Integer.MIN_VALUE;
  10.         int dato;
  11.         boolean hubo =false;
  12.         String resp;
  13.         Scanner input = new Scanner(System.in);
  14.         System.out.println("Quiere ingresar algo?");
  15.         resp = input.nextLine();
  16.         while (resp.equals("S")){
  17.             hubo = true;
  18.             System.out.println("Ingrese un dato");
  19.             dato = Integer.parseInt(input.nextLine());
  20.             if (dato > max) {
  21.                 max = dato;
  22.             }
  23.             System.out.println("mas datos?");
  24.             resp = input.nextLine();
  25.            
  26.         }
  27.  
  28.         if (hubo) {
  29.             System.out.println("Maximo vale" + max);
  30.            
  31.         } else {
  32.             System.out.println("No hubo datos");
  33.         }
  34.        
  35.         input.close();
  36.     }
  37.    
  38. }

Un saludo
  #3 (permalink)  
Antiguo 03/09/2014, 14:05
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Aprendiendo JAVA desde cero - Error con bucle while

Muchas gracias por tu ayuda, ahora voy a estudiar bien el codigo pero ya me funciona.

El manual de Java que tengo escribe el codigo tal como yo lo puse y no funciona, es posible que sea muy viejo y que en versiones anteriores de Java ese mismo codigo que a mi no me funciona corriera correctamente?

Etiquetas: bucle, cero, programa, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:32.