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: MarcosJPO89 en 06 de Mayo 2022, 20:44
-
Hola, estoy haciendo un programa en Java, en el que debo hacer uso de la programación orientada a objetos y ArrayList, y que pida "x" notas y que luego diga la cantidad de aprobados y los que no.
Esto es lo que tengo por ahora:
import java.util.ArrayList;
import java.util.Scanner;
public class AprbReprb {
public static void main(String[] args) {
// TODO Esbozo de método generado automáticamente
Scanner read = new Scanner(System.in);
double []notas;
int aprobados = 0;
int reprobados = 0;
int numNotas;
System.out.println("Escriba el número de notas que desea ingresar");
numNotas = read.nextInt();
notas = new double[numNotas];
for(int i=0; i<notas.length; i++){
System.out.print("Nota "+ (i+1) + ": ");
notas[i] = read.nextDouble();
}
}
}
Quisiera saber cómo puedo hacer la parte para saber cuantos son los aprobados y reprobados.
-
Pero ahí no estás usando ningún ArrayList.
Estás usando un arreglo primitivo:
public static void main(String[] args) {
// TODO Esbozo de método generado automáticamente
Scanner read = new Scanner(System.in);
double []notas;
int aprobados = 0;
int reprobados = 0;
int numNotas;
Un ArrayList para recoger valores double, se declararía de esta manera:
ArrayList<Double> notas = new ArrayList<Double>();
Fíjate que el tipo "Double" lo escribimos en mayúscula. Esto es porque ArrayList no trabaja con tipos primitivos: int, double, float, byte, char...
ArrayList solo trabaja almacenando objetos de clases: Integer, Double, Float, Byte, Character,...
Otra característica del ArrayList es que es dinámico, es decir, no tiene un tamaño fijo como los arreglos primitivos. El ArrayList puede ir creciendo o menguando según insertamos o retiramos objetos.
Así que ni siquiera hace falta preguntar previamente al usuario cuantas notas quiere introducir, podemos ir pidiéndolas y que el usuario decida cuándo quiere terminar.
Esta decisión podemos hacerla preguntando si "quiere continuar (si/no)" o simplificándola aún más mediante alguna condición especial, por ejemplo terminar cuando introduzca un valor negativo (ya que además un valor negativo no serviría como nota para una calificación)
Una vez tenemos las notas insertadas, volvemos a recorrer el ArrayList y por cada nota preguntamos si supera o no la calificación necesaria para aprobar.
Si la supera, contamos un aprobado. Si no, pues contaremos un reprobado.
Terminado este proceso, mostramos los contadores en pantalla.
Si por ejemplo las notas fueran de 0 a 10, siendo necesario un 5 para aprobar, este podría ser el código:
import java.util.ArrayList;
import java.util.Scanner;
public class Notas {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
ArrayList<Double> notas = new ArrayList<Double>();
int aprobados = 0, reprobados = 0;
//Pedimos notas hasta que introduzcan un valor negativo
double nuevaNota = 0;
while (nuevaNota >= 0) {
System.out.print("Introduzca nueva nota(valor negativo para terminar): ");
nuevaNota = read.nextDouble();
//solo aceptamos la nota si NO es valor negativo
if (nuevaNota >= 0)
notas.add(nuevaNota); //Insertamos en ArrayList
}
//Ya tenemos las notas, recorremos el ArrayList evaluando las notas y contando aprobados/reprobados
//Podemos usar un FOR EACH
for (double nota: notas)
if (nota < 5)
reprobados++;
else
aprobados++;
//Listo, mostramos resultados
System.out.println("\n\nAprobados: " + aprobados);
System.out.println("Reprobados: " + reprobados);
System.out.println("\n\t\tFIN DE PROGRAMA");
read.close();
}
}
Al ejecutarlo, en pantalla vemos que se piden notas hasta que se introduce un valor negativo. Entonces se muestra el conteo de aprobados/reprobados:
Introduzca nueva nota(valor negativo para terminar): 6
Introduzca nueva nota(valor negativo para terminar): 3
Introduzca nueva nota(valor negativo para terminar): 8
Introduzca nueva nota(valor negativo para terminar): 9
Introduzca nueva nota(valor negativo para terminar): 1
Introduzca nueva nota(valor negativo para terminar): 2
Introduzca nueva nota(valor negativo para terminar): 5
Introduzca nueva nota(valor negativo para terminar): 5
Introduzca nueva nota(valor negativo para terminar): -2
Aprobados: 5
Reprobados: 3
FIN DE PROGRAMA
Cualquier duda, vuelve a preguntar.
Un saludo.