0

Resulta que al compilar me aparece un error cuando va a llegar a la parte de promedios, y no sé cómo quitarlo o cómo arreglar mi código. Dice que

Exception in thread "main" java.lang.NullPointerException
at prueba.pkg1.Prueba1.mostrarMedia(Prueba1.java:41)
at prueba.pkg1.Prueba1.main(Prueba1.java:72)"

y no me deja seguir. Será que no definí bien los vectores.

 package prueba.pkg1;
 import java.util.Scanner;
 import javax.swing.JOptionPane;
    
 public class Prueba1 {
     private int nElementos;
     private Scanner entrada;
     private float[] notas1;
     private float[] notas2;
        private float promedio;
        private float promedio2;
          public void ingresarElementos1(){
              entrada=new Scanner(System.in);
              nElementos =Integer.parseInt(JOptionPane.showInputDialog("Ingrese número de notas"));
              float[] notas1 = new float[nElementos];
              System.out.println("Ingrese notas primer curso:");
              for(int i=0;i<nElementos;i++){
                  System.out.println((i+1)+".Ingrese notas");
                   notas1[i] = entrada.nextFloat();
              }
          }
              public void ingresarElementos2(){
              entrada=new Scanner(System.in);
              nElementos =Integer.parseInt(JOptionPane.showInputDialog("Ingrese número de notas"));
              float[] notas2 = new float[nElementos];
              System.out.println("Ingrese notas segundo curso:");
              for(int i=0;i<nElementos;i++){
                  System.out.println((i+1)+".Ingrese notas");
                   notas2[i] = entrada.nextFloat();
              }
          }
            public void mostrarMedia(){
            float suma1=0, suma2=0;
                for(int i=0;i<nElementos;i++){
                suma1=suma1+notas1[i];
            }
                promedio=suma1/nElementos;
                System.out.println("EL promedio de estaturas es:"+promedio);
                
                
                for(int i=0;i<nElementos;i++){
                suma2=suma2+notas2[i];
            }
                promedio2=suma2/nElementos;
                System.out.println("EL promedio de estaturas es:"+promedio2);
        }
                public void pym(){
                if(promedio>promedio2){
                    System.out.println("Es mejor el primer curso con un promedio de:"+promedio);
                }else{
                    if(promedio<promedio2){
                        System.out.println("Es peor el primer curso y mejor el segundo curso");
                    }else{
                       if(promedio2>promedio){
                        System.out.println("Es mejor el segundo curso con un promedio de"+promedio2);
                    }
                    }if(promedio2<promedio){
                     System.out.println("Es peor el segundo curso y mejor el primer curso");   
                    }
                }      
        }
        public static void main(String[] args) {
        Prueba1 mira = new Prueba1();
        mira.ingresarElementos1();
        mira.ingresarElementos2();
        mira.mostrarMedia();
       
    
        }
        
    }
Glorfindel
  • 801
  • 1
  • 11
  • 20

2 Answers2

0

Deberia ser un error por apuntar a un indice inexistente en alguno de los vectores que usas, eso se deberia solucionar con nombreVector.lenght

    void mostrarMedia(){
    float suma1 = 0;
    float suma2 = 0;
    for(int i=0; i<nombreVector1.lenght; i++){
        suma1 += nombreVector1[i];
    }
    for(int j=0; i<nombreVector2.lenght; i++){
        suma2 += nombreVector2[i];
    }
    System.out.prinln("Media 1: " + float(suma1/nombreVector1.lenght) );
    System.out.prinln("Media 2: " + float(suma2/nombreVector2.lenght) );
}
0

Creo que lo he terminado lo que he hecho es crear una clase Prueba1 para separarlo en el main que esta igual como tu lo tienes te adjunto codigo de dicha clase.

Tu error radicaba al pedir las notas que daba un nullpointer del copon de hecho por parte era creo que por no tener contructor y aun intentando modificar tu codigo de la funcion ingresasElemento1 y 2 no lo consegui asi que lo he rehecho te dejo comentado el ingresarElemento2 ppara que lo compares.

Es importante que en cuando uses el Scanner lo parsees porque luego va a dar unos errores.

public class Prueba1 {

  
private int nElementos;

 private float[] notas1;
private float[] notas2;
 private float promedio;
 private float promedio2;
 
 
 /*Constructor vacio es importante porque a la hora de llamar a tu variable Prueba 1 mira para poder almacenar las cosas se debe tener un constructor al menos que este vacio mirate algunos videos sobre pdo en java*/
 public Prueba1() {
     
 }
 /*
   public void ingresarElementos1(){
       Scanner entrada=new Scanner(System.in);
      System.out.println( "Ingrese número de notas");
       nElementos =Integer.parseInt(entrada.nextLine());
       double[] notas1 = new double[nElementos];
       System.out.println("Ingrese notas primer curso:");
       for(int i=0;i<notas1.length;i++){
           System.out.println((i+1)+".Ingrese notas");
           double nota1=Double.parseDouble(entrada.nextLine());
           this.notas1[i]=nota1;
           // this.notas1[i] = entrada.nextFloat();
       }
   }*/
 
 public void ingresarElementos1() {
     Scanner entrada=new Scanner (System.in);
     System.out.println("Ingrese el numero de nota que tienes");
     nElementos=Integer.parseInt(entrada.nextLine());
      notas1=new float[nElementos];
      float nota1;
      System.out.println("Ingrese la nota del primer curso");
      for (int i = 0; i < notas1.length; i++) {
          System.out.println(1+i+".Ingrese la nota");
          nota1=Float.parseFloat(entrada.nextLine());
          this.notas1[i]=nota1;
    }
      
      
     
     
 }
 
   /*    public void ingresarElementos2(){
           Scanner entrada=new Scanner(System.in);
       entrada=new Scanner(System.in);
       System.out.println("Ingrese el numero de elementos");
       nElementos=(int) Float.parseFloat(entrada.nextLine());
         float[] notas2 = new float[nElementos];
       System.out.println("Ingrese notas segundo curso:");
       for(int i=0;i<nElementos;i++){
           System.out.println((i+1)+".Ingrese notas");
           this.notas2[i] = entrada.nextFloat();
       }
   }*/
 
 public void ingresarElementos2() {
     Scanner entrada=new Scanner (System.in);
     System.out.println("Ingrese el numero de nota que tienes");
     nElementos=Integer.parseInt(entrada.nextLine());
      notas2=new float[nElementos];
      float nota2;
      System.out.println("Ingrese la nota del segundo curso");
      for (int i = 0; i < notas2.length; i++) {
          System.out.println(1+i+".Ingrese la nota");
          nota2=Float.parseFloat(entrada.nextLine());
          this.notas2[i]=nota2;
    }
 }
 
 
     public void mostrarMedia(){
     float suma1=0, suma2=0;
         for(int i=0;i<nElementos;i++){
         suma1=suma1+notas1[i];
     }
         promedio=suma1/nElementos;
         System.out.println("EL promedio de estaturas es:"+promedio);
         
         
         for(int i=0;i<nElementos;i++){
         suma2=suma2+notas2[i];
     }
         promedio2=suma2/nElementos;
         System.out.println("EL promedio de estaturas es:"+promedio2);
 }
         public void pym(){
         if(promedio>promedio2){
             System.out.println("Es mejor el primer curso con un promedio de:"+promedio);
         }else{
             if(promedio<promedio2){
                 System.out.println("Es peor el primer curso y mejor el segundo curso");
             }else{
                if(promedio2>promedio){
                 System.out.println("Es mejor el segundo curso con un promedio de"+promedio2);
             }
             }if(promedio2<promedio){
              System.out.println("Es peor el segundo curso y mejor el primer curso");   
             }
         }      
 }




 }
GolpeCelestial
  • 331
  • 1
  • 10