Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo B. Tosin

Inserir uma classe dentro de outra classe como parâmetro

Recommended Posts

public class Aluno
{
    String nome;
    String cpf;
    Curso curso;
}
public class Curso
{
    String nome;
    String codigo;
    String turno;
}
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
       Scanner input;
       input = new Scanner(System.in);
       int opc = 1;
       Aluno[] cadastro = new Aluno[10];
       Curso[] c = new Curso[10];
       int count = 0;
       int cont = 0;
       
       while (opc != 0 ) {
           System.out.println("1- Cadastrar Aluno: ");
           System.out.println("2- Imprimir Cadastros: ");
           System.out.println("3- Cadastrar Curso: ");
           System.out.println("4- Imprimir Cursos: ");
           System.out.println("Outra tecla - Sair");
           opc = input.nextInt();
           
           if(opc == 1) {
               if(c == null || c.length == 0){  
                 System.out.println("Deves antes cadastrar um curso!");
                 return;
               }
               
               
               Aluno al = new Aluno();
               System.out.println("Nome: ");
               input.nextLine();
               al.nome = input.nextLine();
               System.out.println("CPF: ");
               al.cpf = input.nextLine();
               System.out.println("Código do Curso: ");
               al.curso.codigo = input.nextLine();
                     
               cadastro[count] = al;
               
               
               count++;
           } else if (opc == 2){
               
                for(int i = 0; i<count;i++) {
                    System.out.println(cadastro[i].nome);
                    System.out.println(cadastro[i].cpf);
                    System.out.println(cadastro[i].curso.codigo);
                    System.out.println(cadastro[i].curso.nome);
                    System.out.println(cadastro[i].curso.turno);
                }
               
           } else if (opc == 3) {
                Curso cs = new Curso();
                System.out.println("Nome do curso: ");
                input.nextLine();
                cs.nome = input.nextLine();
                System.out.println("Código: ");
                cs.codigo = input.nextLine();
                System.out.println("Turno: ");
                cs.turno = input.nextLine();
                c[cont] = cs;
                
                
                cont++;
            
            } else if(opc == 4) {
                
                 for(int i = 0; i<cont;i++) {
                    System.out.println(c[i].nome);
                    System.out.println(c[i].codigo);
                    System.out.println(c[i].turno);
                }
            
            } else {
                opc = 0;
            }
        } 
    }
}

 

Meu problema está sendo quando no main, opc == 1, vou atribuir os parametros para a classe al, no al.curso.codigo quando compilo está dando NullPointerException. Acho que estou fazendo errado, queria entender como eu atribuo valores para o parametro curso da classe Aluno.

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio eu que o erro seja o seguinte: Na linha "al.curso.codigo" você está acessando o objeto Aluno, que você chamou de al, e dentro dele você tenta acessar o Curso do Aluno(al), porém, você não cria o Curso do Aluno(al) e mesmo sem criar você tenta acessa-lo... E isso está causando o NullPointerException.

 

Para consertar, antes de você tentar acessar o "al.curso.codigo" crie o objeto Curso: 

al.curso = new Curso();

Caso não tenha entendido, aqui vai a sua classe Main com o erro consertado(eu testei):


import java.util.Scanner;

public class Main{
	
	public static void main(String[] args) {
		Scanner input;
		input = new Scanner(System.in);
		int opc = 1;
		Aluno[] cadastro = new Aluno[10];
		Curso[] c = new Curso[10];
		int count = 0;
		int cont = 0;

		while (opc != 0 ) {
			System.out.println("1- Cadastrar Aluno: ");
			System.out.println("2- Imprimir Cadastros: ");
			System.out.println("3- Cadastrar Curso: ");
			System.out.println("4- Imprimir Cursos: ");
			System.out.println("Outra tecla - Sair");
			opc = input.nextInt();

			if(opc == 1) {
				if(c == null || c.length == 0){  
					System.out.println("Deves antes cadastrar um curso!");
					return;
				}


				Aluno al = new Aluno();
				al.curso = new Curso();
				System.out.println("Nome: ");
				input.nextLine();
				al.nome = input.nextLine();
				System.out.println("CPF: ");
				al.cpf = input.nextLine();
				System.out.println("Código do Curso: ");
				al.curso.codigo = input.nextLine();

				cadastro[count] = al;


				count++;
			} else if (opc == 2){

				for(int i = 0; i<count;i++) {
					System.out.println(cadastro[i].nome);
					System.out.println(cadastro[i].cpf);
					System.out.println(cadastro[i].curso.codigo);
					System.out.println(cadastro[i].curso.nome);
					System.out.println(cadastro[i].curso.turno);
				}

			} else if (opc == 3) {
				Curso cs = new Curso();
				System.out.println("Nome do curso: ");
				input.nextLine();
				cs.nome = input.nextLine();
				System.out.println("Código: ");
				cs.codigo = input.nextLine();
				System.out.println("Turno: ");
				cs.turno = input.nextLine();
				c[cont] = cs;


				cont++;

			} else if(opc == 4) {

				for(int i = 0; i<cont;i++) {
					System.out.println(c[i].nome);
					System.out.println(c[i].codigo);
					System.out.println(c[i].turno);
				}

			} else {
				opc = 0;
			}
		} 
	}
	
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi sim, valeu pela ajuda. Consegui de outro jeito também, setando já toda a classe curso em aluno de uma vez só (al.curso), que pensando pela sua expolicação é quase a mesma coisa, mas pelo menos entendi, pois não entendia porque desse jeito tinha dado certo. Mas, agora garanto que não ocorra novamente o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou escrevendo um Sistema Java Web e quando clico no Botão Salvar, o Java acusa esse erro:

      ERROR: Cannot invoke "Object.toString()" because the return value of "java.util.Map.get(Object)" is null
       
      Já tentei de várias formas resolver esse problema, mas não estou conseguindo.

      Por favor, alguém pode me ajudar identificar a origem e resolver o problema acima ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou enfrentando um problema que não consigo entender.

      Após Instalar o MySql versão 8.0.36, funciona corretamente realizando as conexões.

      O problema é:
      ---[ após reiniciar o micro, o MySql não faz as conexões.
      --[ tenta localizar este arquivo, mas não acha: my.ini
       
      Onde localizo ou configuro este arquivo na Pasta MySql ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, preciso de ajuda em Relação a Instalar o Jasper Reports no Eclipse, pois a opção de Eclipse Marketplace, não encontra para instalar.
       
      Já tentei de todas as formas mas não consegui, alguém conhece alguma rotina explicando este procedimento ?
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amantes da informática.
       
      Saudações.
       
      Estou usando o Eclipse Mars versão 4.5.0  e o 4.5.2, acredito que deva ter versões mais novas. 
      Sou novato em JAVA e estou encontrando alguns problema em Instalação de alguns plugins, como por exemplo:
       
      1) quando tento instalar o JBoss Tools através do Eclipse Marteplace, o Eclipse não o encontra na lista de plugins.
      2) se tento instalar através do Install New Software, abaixa alguns arquivos, mas também não instala o JBoss.
      3) se abro o site e arrasto o download para a área de trabalho do Eclipse, também não instala o JBoss.
       
      Caros amigos, existe outra alguma forma de instalar o JBoss Tools no Eclipse e como seria ?
       
      Grato,
       
      Cesar
       
       
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.