Como utilizar o atributo do tipo classe na main?

8 respostas
A

Boa noite caros,
Gostaria de saber, o que estou errando nesse code abaixo:

Obs.: O erro é na instancia do construtor publicacao.

Erro: Multiple markers at this line
- idAutor cannot be resolved to a
variable
- publicacao cannot be resolved
to a type
- publicacao cannot be resolved
to a type

//Cadastrar publicacao - Main
					    PublicacaoDao pubDao = new PublicacaoDao();
					    Publicacao pub = null;
					    Publicacao objPub = new Publicacao();
					    Date dataPublicacao = new Date();
					    SimpleDateFormat dataFormatada;
					    String dataRecebida;
					    String titulo;
					    int idautor;
					    int idreferencia;
					    //System.out.printf("Entre com a data da publicacao:");
					    //dataPublicacao = sc.next();
					    //Date.parse(dataPublicacao);
					    System.out.println("Entre com a data da publicacao (dd/MM/yyyy):");
					    dataRecebida = sc.next();
					    dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
					    dataPublicacao = dataFormatada.parse(dataRecebida);
					    System.out.printf("Entre com o nome/titulo da publicacao:");
					    titulo = sc.next();
					    System.out.printf("Entre com o idAutor:");
					    idautor = sc.nextInt();
					    System.out.printf("Entre com o idreferencia:");
					    idreferencia = sc.nextInt();
					    pub = new publicacao(dataPublicacao,titulo, objPub.getAutor().setAutorId(idAutor), objPub.getReferencia().setReferenciaId(idreferencia));
					    pubDao.input(pub);

[color=red]Classe publicação abaixo:[/color]

import java.util.*;

public class Publicacao {
	private int idPublicacao;
	private Date dataPublicacao= new Date();
	private String titulo;
	private Autor autor;
	private Referencia referencia;
	
	public Publicacao()
	{
		
	}
	public Publicacao(Date dataPublicacao, String titulo, Autor autor, Referencia referencia)
	{
		this.dataPublicacao = dataPublicacao;
		this.titulo = titulo;
		this.autor = autor;
		this.referencia = referencia;
	}
	public int getIdPublicacao() {
		return idPublicacao;
	}
	public void setIdPublicacao(int idPublicacao) {
		this.idPublicacao = idPublicacao;
	}
	public Date getDataPublicacao() {
		return dataPublicacao;
	}
	public void setDataPublicacao(Date dataPublicacao) {
		this.dataPublicacao = dataPublicacao;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public Autor getAutor() {
		return autor;
	}
	public void setAutor(Autor autor) {
		this.autor = autor;
	}
	public Referencia getReferencia() {
		return referencia;
	}
	public void setReferencia(Referencia referencia) {
		this.referencia = referencia;
	}	
}

Att,
André

8 Respostas

Mendigo_do_Futuro

Mas qual erro está aparecendo?

matheusunitt

Manda o erro para nós tentarmos identificar :?

A

Então amigo, o erro é esse:

Multiple markers at this line
- idAutor cannot be resolved to a
variable
- publicacao cannot be resolved
to a type
- publicacao cannot be resolved
to a type

no construtor
att, André

Mendigo_do_Futuro

Na linha 24:

pub = new publicacao(dataPublicacao,titulo, objPub.getAutor().setAutorId(idAutor), objPub.getReferencia().setReferenciaId(idreferencia));

O nome do objeto está escrito com a letra P minúscula " new publicacao "
E na chamada ao método setAutorId você está passando como argumento idautor com a letra A maiúscula, mas o nome da variável foi declarado com todas as letras minúsculas.

A

Mendigo_do_Futuro:
Na linha 24:

pub = new publicacao(dataPublicacao,titulo, objPub.getAutor().setAutorId(idAutor), objPub.getReferencia().setReferenciaId(idreferencia));

O nome do objeto está escrito com a letra P minúscula " new publicacao "
E na chamada ao método setAutorId você está passando como argumento idautor com a letra A maiúscula, mas o nome da variável foi declarado com todas as letras minúsculas.


Valeu fera…
Nossa que erro juvenil,
mas o problema ainda continua com outro erro: The constructor Publicacao(Date, String, void, void) is undefined??

ibotirama

André pra facilitar a compreensão do que está acontecendo que tal separar os dois últimos parâmetros do construtor em variáveis e imprimi-las para ver se estão realmente com seus valores setados corretamente, assim :

Autor autor = objPub.getAutor().setAutorId(idAutor)
Referencia referencia = objPub.getReferencia().setReferenciaId(idreferencia)
// Só para ver o que aparece no console
System.out.println(dataPublicacao);
System.out.println(titulo);
System.out.println(autor);
System.out.println(referencia);

pub = new publicacao(dataPublicacao, titulo, autor, referencia);

Espero ter ajudado. :slight_smile:

E
objPub.getReferencia().setReferenciaId(idreferencia)

Que mania, a de economizar variáveis :slight_smile: -

A menos que você tivesse escrito o setter como um método que retornasse alguma coisa (provavelmente “this”), isso que você fez vai naturalmente confundir o compilador.

A

ibotirama:
André pra facilitar a compreensão do que está acontecendo que tal separar os dois últimos parâmetros do construtor em variáveis e imprimi-las para ver se estão realmente com seus valores setados corretamente, assim :

Autor autor = objPub.getAutor().setAutorId(idAutor)
Referencia referencia = objPub.getReferencia().setReferenciaId(idreferencia)
// Só para ver o que aparece no console
System.out.println(dataPublicacao);
System.out.println(titulo);
System.out.println(autor);
System.out.println(referencia);

pub = new publicacao(dataPublicacao, titulo, autor, referencia);

Espero ter ajudado. :slight_smile:

Então realizei isso, mas até agora nada…
veja o code e mais em baixo o resultado.

//Cadastrar publicacao;
						int idPublicacao=0;
					    PublicacaoDao pubDao = new PublicacaoDao();
					    Publicacao pub = null;
					    Publicacao objPub = new Publicacao();
					    Date dataPublicacao = new Date();
					    SimpleDateFormat dataFormatada;
					    String dataRecebida;
					    String titulo;
					    int idAutor=0;
					    int idReferencia=0;
					    System.out.println("Entre com a data da publicacao (dd/MM/yyyy):");
					    dataRecebida = sc.next();
					    dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
					    dataPublicacao = dataFormatada.parse(dataRecebida);
					    System.out.printf("Entre com o nome/titulo da publicacao:");
					    titulo = sc.next();
					    //System.out.printf("Entre com o idAutor:");
					    //idAutor = sc.nextInt();
					    //System.out.printf("Entre com o idreferencia:");
					    //idReferencia = sc.nextInt();
					    System.out.println("Impressões/resultado");
					    Autor objAutor = new Autor();
					    objAutor.setAutorId(0);
					    Referencia objRef = new Referencia();
					    objRef.setReferenciaId(0);
					    System.out.println("Numero autor setado= "+objAutor.getAutorId());
					    System.out.println("Numero da referencia setada="+objRef.getReferenciaId());
					    System.out.println("A data do livro é="+dataPublicacao);
					    //pub = new Publicacao(dataPublicacao, titulo, objAutor.setAutorId(0), objRef.setReferenciaId(0));
					    //pubDao.input(pub);
					    //System.out.println("A publicação *");
					    //Fim do cadastro publicacao;*/

Resultado abaixo:

*** .:Library System:. ***
Opções disponíveis abaixo:
[1]-Cadastrar Autor.
[2]-Cadastrar Referência.
[3]-Cadastrar Publicação.
Qual a opção escolhida?
>3
Entre com a data da publicacao (dd/MM/yyyy):
12/03/2012
Entre com o nome/titulo da publicacao:A arte da guerra
Impressões/resultado
Numero autor setado= 0
Numero da referencia setada=0
A data do livro é=Mon Mar 12 00:00:00 BRT 2012

Criado 4 de abril de 2012
Ultima resposta 5 de abr. de 2012
Respostas 8
Participantes 5