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.