DÚVIDA - Exception

3 respostas
D

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:

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();
      
    }

}

Classe Auxiliar:

package POO;


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

}

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

3 Respostas

L

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

marcelo.bellissimo

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…

D

Problema resolvido! Muito obrigado!

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

Criado 17 de dezembro de 2010
Ultima resposta 17 de dez. de 2010
Respostas 3
Participantes 3