Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: r2montero en 11 de Agosto 2016, 01:45

Título: Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C
Publicado por: r2montero en 11 de Agosto 2016, 01:45
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!!
Título: Re:Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C
Publicado por: Alex Rodríguez en 15 de Agosto 2016, 21:49
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
Título: Re:Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C
Publicado por: r2montero en 17 de Agosto 2016, 18:31
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!
Título: Re:Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C
Publicado por: joe en 24 de Noviembre 2016, 15:55
como quedaria este ejercicio entonces
Título: Re:Ejercicios Repaso Arreglos o arrays en Java hacer buen cierre intervalo CU00903C
Publicado por: Ogramar en 03 de Diciembre 2016, 16:40
Buenas, aquí puede consultarse otra propuesta de solución para el ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=4737.0

Salu2