Antes de mais nada, sempre poste código usando as tags code, ok?
Sobre o seu erro, veja essa linha:
minhaConta=minhasContas[0];
Tens certeza que foi populado a posição 0 do array?
Eu acho que seria esse o seu código:
[code]public class Programa {
public static void main(String[] args) {
Conta[] minhasContas = new Conta[10];
Conta minhaConta= new Conta();
Cliente JP = new Cliente();
minhaConta.titular=JP;
minhaConta.titular.nome=“Joao”;
minhaConta.titular.sobrenome=“Paulo”;
minhasContas[0] = minhaConta;
minhaConta = new Conta();
minhaConta.saldo = 950000;
minhaConta.numero = 001;
Algo assim.
Só uma observação, use encapsulamento para acessar suas variavéis, para este caso em particular.
Os famoso getters e setters e não faça o acesso direto como minhasContas[0].saldo, seria minhasContas[0].getSaldo();
Em C++ as coisas são um pouco diferentes, porque a divisão de tarefas é um pouco difusa. E é por isso que o Java não faz as coisas iguaizinhas ao C++ porque é realmente confuso.
Você pode ter algo como:
Ovo caixa[12];
Em C++ isso junta as responsabilidades da galinha (que é a de fabricar o ovo) e a da fábrica de caixas de ovos (que é a de fazer a caixa). Para tornar isso mais confuso ainda, a caixa de ovos (o array) não tem um indicador de tamanho intrínseco (ou seja, se você receber essa caixa de ovos como parâmetro, não sabe qual é o tamanho dela, se tem 12 ou 20 ovos). Você só tem a indicação de onde a caixa começa, mas não onde a caixa termina.
public class Array {
public static void main(String[] args) {
//Criando Vetor
Objeto [] vetor = new Objeto [5];
//Este for cria objetos e aloca na posição [i], até o final do vetor.
for (int i = 0; i < vetor.length; i++) {
vetor[i]= new Objeto();
}
//Essa parte altera o nome que é um atributo da classe Objeto.
vetor[0].nome="Teste1";
vetor[1].nome="Teste2";
vetor[2].nome="Teste3";
vetor[3].nome="Teste4";
vetor[4].nome="Teste5";
//Esse for mostra todos os atributos "nome" dos objetos do vetor.
for (int i = 0; i < vetor.length; i++) {
System.out.println(vetor[i].nome);
}
}
}
Olá,
Coloquei alguns comentários em seu código para lhe ajudar a entender o que está errado.
Basicamente você tentou acessar um objeto que não existe. O que existe é uma variável de referencia que por enquanto não aponta para lugar algum. 8)
[code]public class Programa {
public static void main(String[] args) {
Conta[] minhasContas;
minhasContas = new Conta[10];// Aqui você cria uma “caixa” com capacidade para armazenar 10 objetos Conta. Observe que você ainda não tem nenhum objeto Conta, somente a “caixa” para armazena-los.
Conta minhaConta;
minhaConta= new Conta(); // Aqui você realmente cria um Objeto Conta;
Cliente JP;
JP = new Cliente();
minhaConta=minhasContas[0];//Aqui você pega o que tem na sua caixa , que por enquanto é null, e coloca na variável minha conta. Agora sua variável minhaConta tem um null e não um objeto Conta;
minhaConta.titular=JP; // Aqui você está fazendo null.titular=JP, por isso é gerada a exception.
minhaConta.titular.nome=“Joao”;
minhaConta.titular.sobrenome=“Paulo”;
minhaConta = new Conta();
minhaConta.saldo = 950000;
minhaConta.numero = 001;
System.out.println(minhasContas[0].saldo);
O que quiseram explicar foi que você tinha uma referência de um Objeto nula e tentava executar alguma ação com ele.
Você tinha uma referência nula e tentava, nesse caso, acessar a variavél titular, fazendo:
minhaConta.titular=JP;
Como a referência minhaConta é nula, seria o mesmo que: