Autor Tema: Java diferencia entre ArrayList de objetos Double y arreglo array tipo primitivo  (Leído 2065 veces)

MarcosJPO89

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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:

Código: [Seleccionar]
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.

« Última modificación: 19 de Junio 2022, 13:55 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Usando ArrayList
« Respuesta #1 en: 07 de Mayo 2022, 12:13 »
Pero ahí no estás usando ningún ArrayList.
Estás usando un arreglo primitivo:
Citar
   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:
Código: [Seleccionar]
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:
Código: [Seleccionar]
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:
Citar
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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

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