DÚVIDA - Exception

Pessoal, eu escrevi esse programa só para testar se ele pega o valor de uma variável de outra classe, mas está dando um erro…

Classe Principal:

[code]package POO;
import java.util.Scanner;

public class UrnaEletronica2 {
int votoP, contagemvotoP[];
public static void main (String args[]) {

    int votoP;
    int[] contagemvotoP = new int[3];
    MostraResultado2 resultado = new MostraResultado2();
    
    Scanner entrada = new Scanner (System.in);

    System.out.println("PRESIDENTE:");
    votoP = entrada.nextInt();
    
    
    switch (votoP) {

        case 11:
            contagemvotoP[0]++;
            break;
        case 22:
            contagemvotoP[1]++;
            break;
        case 33:
            contagemvotoP[2]++;
            break;
    }
    resultado.mostra();
  
}

}[/code]

Classe Auxiliar:

[code]package POO;

public class MostraResultado2 extends UrnaEletronica2 {

public void mostra() {
    System.out.print("Candidato obteve " + contagemvotoP[0] + " votos.\n");
}

}[/code]

o ERRO é esse:

run:
PRESIDENTE:
11
Exception in thread “main” java.lang.NullPointerException
at POO.MostraResultado2.mostra(MostraResultado2.java:7)
at POO.UrnaEletronica2.main(UrnaEletronica2.java:30)
Java Result: 1

Está dando nullPointer pois o seu atributo está nulo, veja que você declarou ela fora do main e não cria uma instancia dele ( contagemvotoP )

para que funcione você declara fora do main assim:

static int[] contagemvotoP = new int[3];

para poder ser acessado dentor do main, e também para que não seja nulo na outra classe

e o momento que você pede para “votar” se são 3 votos você deve colocar dentro de um for assim:

		for (int y = 0; y <= 2; y++) {
			votoP = entrada.nextInt();

			switch (votoP) {

			case 11:
				contagemvotoP[0]++;
				break;
			case 22:
				contagemvotoP[1]++;
				break;
			case 33:
				contagemvotoP[2]++;
				break;
			}
		}

espero ter ajudado…

abraço

Seguinte,

A variável que você está tentando acessar pra imprimir o valor ainda não foi instanciada, você extendeu a classe mas isso não quer dizer que ela vai herdar a variável já criada, pois você está instanciando um novo objeto na memória e que tem aqueles atributos.

Coloque a sua variável como “static” e altere essa linha aqui:

int contagemvotoP[] = new int[3]; //para contagemvotoP = new int[3];

Testa aí e vê o que acontece…

Problema resolvido! Muito obrigado!

Declarei a variavel contagemvotoP como static e inicializei assim como voce disse…
Valeu mesmo!