Java - problema con flujo de control en un arreglo

 
Vista:

problema con flujo de control en un arreglo

Publicado por mauricio (1 intervención) el 03/03/2020 01:33:30
Hola!
tengo un problema con mi código.

la cosa es que, tengo que llenar un arreglo de tamaño 5 con notas del 1 al 7. El problema es que la restricción de que el arreglo tienen que ir números mayor a 0 y menor a 7, me esta dando problemas.

cuando ingreso números fuera del rango permitidos igual este pasa el while.

VER IMAGEN PARA MAS DETALLES
DUDA-WHILE
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: 12
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

problema con flujo de control en un arreglo

Publicado por Marco (5 intervenciones) el 03/03/2020 02:07:48
Intenta hacerlo simple, con un if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);
int j;
int notas[] = new int[5];
do
{
for(j = 0; j<5; j++)
{
System. out. println("Ingresar nota:");
notas[j] = lectura.nextInt();
if(j <= 0 && j > 7)
{
System.out.println("Nota invalida, ingrese nota entre 1 y 7");
j--;
}
}
}while(j<5);
}
Creo que algo asi deberia de ser, o al menos debe estar cerca de funcionar como quieres, no tengo tiempo de probarlo, pero puedes probar y modificar segun te convenga, aunque el do while ya esta de mas.
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problema con flujo de control en un arreglo

Publicado por Rodrigo (623 intervenciones) el 03/03/2020 07:27:16
Hay que comparar la nota, no el indice.

Que tal si lees la nota y dejas el valor en alguna variable distinta y ANTES de asignarla al arreglo notas la comparas, y si no esta en los limites que quieres no la asignas, y si esta si.
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problema con flujo de control en un arreglo

Publicado por Rodrigo (623 intervenciones) el 03/03/2020 07:45:16
Alternativamente, podrias asignar la nota siempre, pero solo incrementar el contador si la nota esta en los limites que quieres.
Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
   Scanner entrada = new Scanner(System.in);
   int i = 0;
   int notas[] = new int[5];
 
   while( i < 5 ) {
      System.out.printf("Ingresar nota[%d]: ", i+1);
      notas[i] = entrada.nextInt();
      if(notas[i] <= 0 || notas[i] > 7) {
        System.out.println("Nota invalida, ingrese nota entre 1 y 7");
      } else {
         i++;
      }
   }
 
   for(i = 0; i<5; i++) {
      System.out.print(notas[i] + " ");
   }
 }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar