Erro JOptionPane!

3 respostas
O

Olá pessoal o que seria este erro:
"Exception in thread "main" java.lang.NullPointerException"

Ele aparece quando tento executar o código que segue abaixo:

import javax.swing.*;
public class Cadastro{
	public static void main(String args[])
		{
			for (int i=0;i<3;i++){
			Carro d[]=new Carro[3]; 
			d[i].setNomeCarro(JOptionPane.showInputDialog("Entre com o nome do carro"));
			d[i].setMarca(JOptionPane.showInputDialog("Entre com o nome da marca"));
			}			
			for (int i=0;i<5;i++){
			Roda p[]=new Roda[5]; 
			p[i].setNome(JOptionPane.showInputDialog("Entre com o nome da roda"));
			p[i].setPreco(Double.parseDouble(JOptionPane.showInputDialog("Entre com o Preço")));
			p[i].setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Entre com o Código")));			
			p[i].getCarro().getNomeCarro();
			
			String pesquisa=JOptionPane.showInputDialog("Informe o carro a pesquisar:"); 
			
				if (pesquisa.equalsIgnoreCase(p[i].getCarro().getNomeCarro())){
					JOptionPane.showMessageDialog(null, "Nome da roda e seu caro é: "+p[i].getNome()+"\n"+ p[i].getCarro().getNomeCarro());
					
					}
					
			double menorpreco, maiorpreco; // pesquisa de produto por faixa de preço
			menorpreco=Double.parseDouble(JOptionPane.showInputDialog("Digite o menor preço para pesquisa:"));
			maiorpreco=Double.parseDouble(JOptionPane.showInputDialog("Digite o maior preço para pesquisa:"));
			if(menorpreco>= p[i].getPreco() && maiorpreco <= p[i].getPreco()){
				JOptionPane.showMessageDialog(null, "Nomes  com esse preço são: " + p[i].getNome() + "\n" + p[i].getPreco());
				}
			}
				System.exit(0);
		}
}

3 Respostas

_Renatu

esse erro significa que voce provavelmente está chamando um método de um objeto que tem o ponteiro nulo…

Eu imagino que seja isso:

quando voce fizer Carro d[] = new Carro[3];

vc precisa fazer

d[0] = new Carro();

pra depois fazer d[i].setNome() e etc

a mesma coisa com a roda… ok?

francislon

Declare os vetores fora do for e faça o que o amigo em cima disse.
Veja como ficou o codigo com as mudanças:

import javax.swing.*;

public class Cadastro{
    public static void main(String args[]) {
        Carro d[]=new Carro[3]; // Veja que declarei os vetores antes do for
        Roda p[]=new Roda[5];
        for (int i=0;i<3;i++){
            d[i] = new Carro();
            d[i].setNomeCarro(JOptionPane.showInputDialog("Entre com o nome do carro"));
            d[i].setMarca(JOptionPane.showInputDialog("Entre com o nome da marca"));
        }
        for (int i=0;i<5;i++){
            p[i] = new Roda();
            p[i].setNome(JOptionPane.showInputDialog("Entre com o nome da roda"));
            p[i].setPreco(Double.parseDouble(JOptionPane.showInputDialog("Entre com o Preço")));
            p[i].setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Entre com o Código")));
            p[i].getCarro().getNomeCarro();
            String pesquisa=JOptionPane.showInputDialog("Informe o carro a pesquisar:");
            if (pesquisa.equalsIgnoreCase(p[i].getCarro().getNomeCarro())){
                JOptionPane.showMessageDialog(null, "Nome da roda e seu caro é: "+p[i].getNome()+"\n"+ p[i].getCarro().getNomeCarro());
            }
            double menorpreco, maiorpreco; // pesquisa de produto por faixa de preço
            menorpreco=Double.parseDouble(JOptionPane.showInputDialog("Digite o menor preço para pesquisa:"));
            maiorpreco=Double.parseDouble(JOptionPane.showInputDialog("Digite o maior preço para pesquisa:"));
            if(menorpreco>= p[i].getPreco() && maiorpreco <= p[i].getPreco()){
                JOptionPane.showMessageDialog(null, "Nomes  com esse preço são: " + p[i].getNome() + "\n" + p[i].getPreco());
            }
        }
        System.exit(0);
    }
}
O

Valeu francislon, refiz aqui. obrigado

Criado 23 de setembro de 2007
Ultima resposta 24 de set. de 2007
Respostas 3
Participantes 3