1

Como se puede intuir del titulo de mi pregunta, soy totalmente nuevo en Java y en programación. Sin más preámbulos, Eclipse no me deja compilar por este error y me dice que está en la linea:

System.out.printf("Digite el %s numero, por favor", cadena[i]);

Aquí les dejo el código completo. Gracias.

import java.util.Scanner;

public class Verificar {

    private int arreglo[];
    private boolean creciente = true;
    private String [] cadena;

    public void verificar () {
        arreglo = new int[10];
        cadena = new String[] {"Primer", "Segundo", "Tercer", "Cuarto", "Quinto", "Sexto", "Septimo", "Octavo", "Noveno", "Decimo"};
    }

    public boolean getResult() {
      for(int i = 0; i <9; i++) {   
        if(arreglo [i] < arreglo[i+1]) {
          creciente = true;
        }
        else {
          creciente = false;
        }
      }

      return creciente;
    }

    public void saveArray() {
        Scanner entrada = new Scanner(System.in);
        for(int i = 0; i < 10; i ++) {
            System.out.printf("Digite el %s numero, por favor", cadena[i]);
            arreglo[i] = entrada.nextInt();
        }
    }
}

Y este código es el main:

import javax.swing.JOptionPane;

public class Output {

    public static void main(String[] args) {
        // TODO Auto-generated method stub


    Verificar verificar = new Verificar();


    do {
        JOptionPane.showInputDialog("A continuacion se le pedira que digite 10 numeros en orden ASCENDENTE");
        verificar.saveArray();
        if(verificar.getResult()) {
            System.out.println("Los digitos fueron escritos en orden ascendente");
        }
            else {
                System.out.println("No fueron escritos en orden ascendente");
            }

    }
        while(verificar.getResult());


    }
}

Al parecer el problema está en el método saveArray, pero no estoy seguro.

danielperezsv
  • 412
  • 2
  • 8
Alexrr95
  • 15
  • 5
  • 1
    He probado tu código declarando los métodos `static` y llamándolos en `main` y no he recibido ningún error. Qué tratas de hacer?, si puedes explica un poco más tu situación e incluye todo tu código para ver cómo estás tratando de ejecutarlo. – RRGT19 May 10 '18 at 02:38
  • @RobertGomez, seguro que has copiado exactamente su código? El fallo lo tiene en el constructor, no lo ha declarado bien, por eso me parece raro que a ti te funcione – Pablo Simon DiEstefano May 10 '18 at 07:43
  • Aquí hay un error de concepto: un NPE no aparece en tiempo de compilación, eclipse está compilando y ejecutando el código, pero el código lanza una excepción (el citado NPE). – Pablo Lozano May 10 '18 at 09:09
  • @PabloSimonDiEstefano Pasa que al inicio el solo tenía en la publicación los 3 métodos y yo los llame desde el main y me funcionaba. Por esa razón le pedí que publicara todo su código y ahora veo que estaba tratando de instanciar, cosa que no había dicho anteriormente. – RRGT19 May 10 '18 at 12:21

1 Answers1

2

El problema es que no has declarado bien el constructor, debería ser public Verificar(){...}, nota la declaración correcta no tiene tipo de retorno y la "v" está en mayúscula al igual que el nombre de la clase Verificar. Por esa razón cuando creas una nueva instancia de la clase, Verificar verificar = new Verificar();, estas llamando al constructor por defecto que tiene una clase cuando no declaras ningún constructor y es por eso que no se están inicializando los vectores arreglo y cadena y te da el error de puntero nulo.

Tu constructor debería quedar así:

   ...
   public Verificar () {
        arreglo = new int[10];
        cadena = new String[] {"Primer", "Segundo", "Tercer", "Cuarto", "Quinto", "Sexto", "Septimo", "Octavo", "Noveno", "Decimo"};
   }
   ...
danielperezsv
  • 412
  • 2
  • 8