Ir para conteúdo

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 Jack Oliveira
      Ola pessoal boa tarde
      estou tentando fazer um texto se mover dentro do input porem nao esta dando resultado que preciso
       
      Este é o codigo 
      <script type="text/javascript"> $(document).ready(function () { var frases = [{ 'elemento': $('input[name=search_string]'), 'frases': ["O que você está procurando?", "Buscar por: Academia, Barbearia, Churrascaria, Decoração, Escola, Farmácia, Gráfica, Imobiliaria, Lanchonete, Mecânica, Odontologia, Pizzaria...", "Faça sua busca por segmentos aqui.", "São mais de 3mil empresas para serem exploradas."] }]; animaInput(frases); }); </script>  
    • Por Rengavitp
      Boa noite pessoal!
       
      Estou fazendo um projeto web com spring boot e é a primeira vez que lido com imagens. Minha idéia é salvar imagens em uma pasta e depois recuperar essa imagem e mostrar, mas o problema que estou enfrentando é o seguinte, seu eu envio para o src do projeto na pasta imagens, eu até consigo acessar as imagens, mas preciso atualizar o projeto na IDE (isso vai acontecer em produção?) eu tentei salvar em uma pasta fora do source do projeto mas ai não consigo acessar. como devo fazer? fiz várias pesquisas, mas nenhuma me ajudou.
       
      Desde já agradeço.
    • Por Rengavitp
      Bom dia pessoal!

      Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

      Versão do java na aplicacao 11
      Versão do jva no servidor 11
      Versão do tomcat no servidor 8.5.55
       
      minha classe principal
      package br.com.masterplastfitas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MasterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MasterApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MasterApplication.class); } } meu pom.xml
      <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>masterplast</groupId> <artifactId>Master</artifactId> <version>2.0</version> <packaging>war</packaging> <name>Master</name> <description>Aplicação web </description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>  
    • Por Stephhany909
      While trying to persist an object with an attribute of type Point, defined as follows:
       
      @Entity @Table(name = "event") public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(columnDefinition = "POINT") private Point coordinate; } I'm getting the error Data truncation: Cannot get geometry object from data you send to the GEOMETRY field.
      The corresponding database table is defined as follows:
       
      create table event ( id bigint not null auto_increment, coordinate POINT, primary key (id) ) engine= InnoDB; What am I missing?
       
    • Por Yuri080
      Bom dia, ultimamente eu venho tentado baixar o connector/J do MySQL para fazer um CRUD porém quando eu baixo o connector ele vem em formato de pasta, e sinceramente não sei mais o que fazer, eu baixei até pelo instalador do MySQL mas ele vem em formato de pasta  ele vem assim, e não sei o porque disso.
×

Informação importante

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