Java - Necesito ayuda para resolver este bucle en JAVA

 
Vista:

Necesito ayuda para resolver este bucle en JAVA

Publicado por JuanRodri98 (2 intervenciones) el 15/12/2019 01:17:59
Buenas necesito ayuda para resolver el siguiente código, lo he estado intentando pero no doy con la solución,estoy aprendiendo a programar y no encuentro el error, cuando pongo un valor correcto por primera vez me salta el error y cuando pongo dos veces 2 valores incorrectos me detiene el programa cuando debería estar preguntando en bucle hasta insertar un valor correcto

ENUNCIADO ->

Hay que preguntar al usuario cuál es la Estimación del Aforo del estadio. Si Ponemos un
valor <0 o un valor> 90000 Tiene que indicar por pantalla una Mensaje de error y volver a
preguntarle al usuario.

Después debe hacer una encuesta a 5 ESPECTADORES:

Si el valor del nº de ESPECTADORES está entre 0 y 20000 será una entrada floja, preguntando el
Motivo porque creen que ha ido tan poca gente: "rival / horario / meteorología"


Si el valor está entre 60000 y 90000 será una gran entrada y deberá preguntar el Motivo
porque creen que ha Ido tanta gente: "rival / Clasificacion / equipo"

CODIGO ->

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
 
//variables//
    int estimacio;
    int enquesta = 5;
 
//estimacion aforo//
    do {
        System.out.println(" Quina sera l'estimacio de l'aforament de l'estadi? ");
        estimacio = sc.nextInt();
 
    } while (estimacio < 0 && estimacio > 90000); {
        System.out.println(" Error. Aquesta estimacio es invalida,torna a introduirla ");
        estimacio = sc.nextInt();
    }
 
//encuesta a 5 espectadores//
    for (int i = 0; i < enquesta ++;) {
 
        if (estimacio >= 0 && estimacio <= 20000) {
            System.out.println(" Per quien motiu creus que ha anat tan poca gent? (rival,horari o metereologia) ");
            enquesta = sc.nextInt();
        } else if (estimacio >= 20001 && estimacio <= 90000) {
            System.out.println(" Per quien motiu creus que ha anat tanta gent? (rival,classificacio o equip) ");
            enquesta = sc.nextInt();
        }
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 96
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Necesito ayuda para resolver este bucle en JAVA

Publicado por Bruno (43 intervenciones) el 15/12/2019 10:58:39
Entonces estas diciendo que el código de la línea 13 esta fallando y es así. Veamos tu prueba de escritorio:
estimacio <0 >90000 resultado
-1 v f f: falla
0 f f f: falla
50000 f f f: falla
91000 f v f: falla

Si cambiamos la línea 13 por este código: while ( !( estimacio > 0 && estimacio < 90000 );
La prueba de escritorio arroja:
estimacio >0 <90000 resultado
-1 v f v: condición verdadera (lo que sería un valor incorrecto) ingresa al ciclo
0 f f v:
50000 f f f: condición falsa (lo que sería un valor correcto) no vuelve al ciclo
91000 f v v:

Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda para resolver este bucle en JAVA

Publicado por JuanRodri98 (2 intervenciones) el 15/12/2019 15:59:21
Gracias por responder, pero no consigo que funcione correctamente.
Cuando cambio el código de la linea 13 "while (estimacio < 0 && estimacio > 90000);"

por el que me has dicho
" ( !( estimacio > 0 && estimacio < 90000 );"

al poner cualquier valor sea correcto o incorrecto entra en bucle esta parte de código:

do {
System.out.println(" Quina sera l'estimacio de l'aforament de l'estadi? ");
estimacio = sc.nextInt();

Cuando tendría que ser:
Valor incorrecto -> -1
Valor incorrecto -> 90001
Rango de valores correctos -> 0 - 90000 y debería saltar al if de abajo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 96
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Necesito ayuda para resolver este bucle en JAVA

Publicado por Bruno (43 intervenciones) el 16/12/2019 23:43:06
Lo que entiendo es que quieres validar los valores cargados por teclado: Si el valor ingresado no se encuentra en el rango de 0 a 90000 debe solicitarlo de nuevo. Para eso esta el ciclo do while de las líneas 9 a 13 con la corrección de la condición del ciclo que te envié.

Te lo hago una nueva corrección ya que la vez pasada solo me encargue de la condición del ciclo y no me percaté que querías mostrar el mensaje de la línea 14.

1
2
3
4
5
6
7
8
9
10
11
12
int salir = 0;
 
do {
	System.out.println(" Quina sera l'estimacio de l'aforament de l'estadi? ");
	estimacio = sc.nextInt();
 
	if(!(estimacio > 0 && estimacio < 90000))
		System.out.println(" Error. Aquesta estimacio es invalida,torna a introduirla ");
	else
		salir = 1;
 
} while ( salir == 0 );

Espero haya contribuido. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar