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
-
Por favor revisar y dar las indicaciones correspondientes... Ejercicio CU00903C del curso de programación en Java avanzado.
Ejercicio 1.
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.
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!!
-
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
-
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!
-
como quedaria este ejercicio entonces
-
Buenas, aquí puede consultarse otra propuesta de solución para el ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=4737.0
Salu2