Dúvida Java intermediário

6 respostas
java
B

Boa noite,

Não consigo entender por que o meu código, quando chega na linha 32, para de funcionar com erro “pointer exception”.

Alguém poderia dar uma ajuda?

código: http://prntscr.com/dl2acb

Obrigado.

6 Respostas

wldomiciano

Porque nesta linha:

Contact contactInfo[] = new Contact[3];

Você instanciou um array com capacidade para 3 Contacts, porém não criou os Contacts própriamente ditos. Tente colocar abaixo da linha que citei acima o seguinte:

contactInfo[0] = new Contact();
contactInfo[1] = new Contact();
contactInfo[2] = new Contact();
matheus.cirillo

É exatamente o que nosso amigo acima disse.

Você criou o vetor Contact, porém não o populou.
Você está setando um valor setName(keyboard.next()) em um objeto nulo. No caso contactInfo[c], pois não há nenhum objeto dentro da tal posição.

Primeiro você deve popular o vetor, para só depois então setar os atributos. Você pode fazer isso no próprio for.
Por exemplo:

Contact contactInfo[] = new Contact[3];
        for (int c = 0; c < contactInfo.length; c++) {
            contactInfo[c] = new Contact(); // aqui você está populando a posição 'c' do array
            System.out.println("Enter three contacts > ");
            System.out.print("Contact " + (c + 1) + ": ");
            contactInfo[c].setName(keyboard.next());

            // aqui você vai setando os outros atributos..
        }
peczenyj

a notação de array é uma coisa levemente confusa em Java, mas tem explicação historica.

se fosse hoje seria algo como Array<T>(int tamanho) porem generics vieram depois.

então vc faz new MinhaClasse[3] mas vc não fez new na classe mas sim em um array da mesma.

B

Agora entendi, muito obrigado mesmo.

Porém, estou com dificuldade agora para mostrar as informações na tela com um método de outra classe:

Código: http://prntscr.com/dlh213

Estou a dias tentando, mas nada. Essa relação “tem um” e “tem muitos” é complexa, caso tiver algum material que ajude também, será bem vindo.

B

Agora entendi, ficou bem mais esclarecido! Era isso que estava faltando :slight_smile:

Porém, estou com dificuldade agora para mostrar as informações na tela com um método de outra classe:

Código: http://prntscr.com/dlh213

Estou a dias tentando, mas nada. Essa relação “tem um” e “tem muitos” é complexa, caso tiver algum material que ajude também, será bem vindo.

No aguardo.

matheus.cirillo

Exatamente :smiley:

Criado 18 de dezembro de 2016
Ultima resposta 20 de dez. de 2016
Respostas 6
Participantes 4