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.

      Por favor, alguém pode me dar uma explicação referente o Template AdminLTE + Java Netbeans.

      Após importar para o Sistema Web. o componente para a pasta:
      WEB PAGES
      |___> bower_components - fica apresentando ERRO em algumas subpastas.

      Como consigo corrigir esses erros ?

      At.te,

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

      Estou com uma dúvida em Sistema WEB em Java.

      O Código abaixo está na Página index.jsp
      <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/> </head> </html>
      O problema são os caracteres especiais que não consigo corrigir.

      Como consigo converter os Caracteres para o Padrão Português(BR) ?

      Grato,

      Cesar
    • 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
×

Informação importante

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