Autor Tema: Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C  (Leído 2004 veces)

r2montero

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Por favor revisar y dar las indicaciones correspondientes...  Ejercicio CU00903C del curso de programación en Java avanzado.

Ejercicio 1.
Código: [Seleccionar]
import java.util.Scanner;
public class Ejercicio1 {
 
 
  public static void main(String[] args) {
   final int SIZE = 5;
    int[] five = new int[SIZE];
    int counter = 0;
    Scanner readInt = new Scanner(System.in);
    char leter = 97;
   
    while(counter < five.length) {
     
      System.out.print("Escriba el entero " + leter + ": ");
      five[counter] = readInt.nextInt();
      counter++;
      leter++;
    }
   
    counter = 0;
   
    while(counter < five.length) {
     
      System.out.println("En el  índice " + counter + " está el valor " + five[counter]);
      counter++;
    }
   
  }

}

Ejercicio 2.
Código: [Seleccionar]
import java.util.Scanner;
public class Ejercicio2 {

  public static void main(String[] args) {
    final int SIZE = 2;
    String[] name = new String[SIZE];
    String[] status = new String[SIZE];
    double[] rate = new double[SIZE];
    Scanner read = new Scanner(System.in);
       
    for( int counter = 0; counter < SIZE; counter++) {
     
      System.out.print("Indique el nombre del estudiante: ");
      name[counter] = read.next();
      System.out.print("Indique la nota de : " + name[counter]);
      rate[counter] = read.nextDouble();
     
      if(rate[counter] >= 0 && rate[counter] <= 4.99) {
        status[counter] = "Suspenso";
      }
      else if(rate[counter] >= 5 && rate[counter] <= 6.99) {
        status[counter] = "Bien";
      }
      else if(rate[counter] >= 7 && rate[counter] <= 8.99) {
        status[counter] = "Notable";
      }
      else if(rate[counter] >= 9 && rate[counter] <= 10) {
        status[counter] = "Sobresaliente";
      }
      else {
        System.out.println("Digite una nota válida (entre 0 y 10) \n");
        counter--;
      }     
           
    }
   
    for( int counter = 0; counter < SIZE; counter++) {
      System.out.println("Estudiante: " + name[counter] + "   Nota: " + rate[counter] + "   Condicion: " + status[counter]);
    }
  }
}

Saludos!!
« Última modificación: 15 de Agosto 2016, 21:47 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2051
    • Ver Perfil
Hola r2montero

El ejercicio uno todo correcto

En el ejercicio 2 te recomiendo que para tener los intervalos bien cubiertos uses menores estrictos

Por ejemplo en

      if(rate[counter] >= 0 && rate[counter] <= 4.99) {
        status[counter] = "Suspenso";
      }


Usar

      if(rate[counter] >= 0 && rate[counter] < 5) {
        status[counter] = "Suspenso";
      }


Este cierre de intervalo es más seguro. Si por error de cálculo o por cualquier tipo de circunstancia llegara un valor como 4.999 el programa no fallaría. Esto en general es de interés hacerlo, me refiero a hacer un cierre completo de intervalos, aunque para cada caso hay que pensarlo.

Hay otra cosa poco recomendable. Tienes el bucle for( int counter = 0; counter < SIZE; counter++) {

y utilizas

      else {
        System.out.println("Digite una nota válida (entre 0 y 10) \n");
        counter--;
      }


Manipular el contador de un bucle for es en general algo que no se aconseja. Si necesitas repetir un proceso como sería este caso es preferible un bucle while donde en caso de que el proceso sea válido sumes al contador, y en caso de no ser válido no hagas nada. En general se considera preferible no estar sumando y restando a un contador. Se debe solo sumar cuando corresponda y no hacer nada cuando no procede sumar.


Saludos

r2montero

  • Sin experiencia
  • *
  • Mensajes: 40
    • Ver Perfil
Muchas gracias por la retroalimentación Alex!

En la última parte del ejercicio 2, admito que la solución me pareció bastante chapucera, pero no se me ocurrió nada más...
En ese caso me devuelve al inicio total de la entrada, es decir tengo que volver a anotar el nombre del estudiante y la nota, ¿Cómo podría hacer para que en caso de digitar una nota incorrecta el programa me solicitara SOLO la nota nuevamente y no también el nombre?

Saludos!

joe

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
como quedaria este ejercicio entonces

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2630
    • Ver Perfil
Buenas, aquí puede consultarse otra propuesta de solución para el ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=4737.0

Salu2

 

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".