Qual é o erro? [RESOLVIDO]

11 respostas
hackum
Olá pessoal! Estou estudando o livro do Java Como Programar. E me deparei com uns exercicios que estão não obtendo sucesso. Veja bem:
//GradeBook
//Programa para cursos

public class GradeBook {
	
	private String courseName; //nome do curso para esse GradeBook
	private String courseAutor; //nome do autor para esse GradeBook
	
	//construtor
	public GradeBook(String autor, String nome)
	{
		courseName = nome;
		courseAutor = autor;
	}
	
	//método para configurar o nome do curso
	public void setCourseName(String nome)
	{
		
		courseName = nome; //configura o nome do curso
		
	}
	
	//método para recuperar
	public String getCourseName()
	{
		return courseName;
	}
	
	public void setCourseAutor(String autor)
	{
		courseAutor = autor;
	}
	
	
	public String getCourseAutor()
	{
		return courseAutor; 
	}
	


}
//GradeBookTest.java
//Chama GradeBook e chamar seus respectivos valores e depois seta-los

import java.util.Scanner; //importa a classe Scanner
public class GradeBookTest {

	//inicialização do programa
	public static void main(String args[])
	{
		
		GradeBook gradeBook1 = new GradeBook("WebDesign");
		GradeBook gradeBook2 = new GradeBook("Gustavo");
		
		//Cria Scanner para obter dados a partir da janela de comando
		Scanner input = new Scanner(System.in);
		
	     System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName());
	     System.out.printf("Autor do curso: %s",gradeBook2.getCourseAutor());	
		
	}
}

O problema está na iniciaização do construtor. Porque razão está dando erro ?

11 Respostas

drigo.angelo

Qual erro está sendo acusado?

drigo.angelo

Tenta assim:

GradeBook gradeBook1 = new GradeBook("Autor do livro WebDesign", "WebDesign");
F

isso mesmo que o Drigo disse:

se vc criou um construtor passando dois parametros, então quando for instanciar vc tem que colocar o valor dos dois parametros …

hackum

Nesse caso ficaria errado.E o método set e get e o gradebook2 ? Como vou inicia-los conforme o meu programa ?

System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName()); System.out.printf("Autor do curso: %s",gradeBook2.getCourseAutor());

adriano_si

hackum:
Nesse caso ficaria errado.E o método set e get e o gradebook2 ? Como vou inicia-los conforme o meu programa ?

System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName()); System.out.printf("Autor do curso: %s",gradeBook2.getCourseAutor());

Mas pra que 2 objetos se você só quer cadastrar só 1 Curso ??? Você que fez errado… criou 2 atributos no construtor e quer criar um objeto passando só… Atualize aí como o amigo acima disse e exclua o segundo Objeto…

hackum
O deitel me mostrou uma coisa, e vocês me mostraram outra. Não entendi, voces poderiam ser mais claros ? Como me explicam esse codigo:
// Fig. 3.10: GradeBook.java
// Classe GradeBook com um construtor para inicializar o nome de um curso.

public class GradeBook
{
   private String courseName; // nome do curso para esse GradeBook

   // construtor inicializa courseName com String fornecido como argumento
   public GradeBook( String name )                                       
   {                                                                     
      courseName = name; // inicializa courseName
   } // termina construtor

   // método para configurar o nome do curso
   public void setCourseName( String name )
   {
      courseName = name; // armazena o nome do curso
   } // termina o método setCourseName

   // método para recuperar o nome do curso
   public String getCourseName()
   {
      return courseName;
   } // termina o método getCourseName

   // exibe uma mensagem de boas-vindas para o usuário GradeBook
   public void displayMessage()
   {
      // essa instrução chama getCourseName para obter o
      // nome do curso que esse GradeBook representa
      System.out.printf( "Welcome to the grade book for\n%s!\n", 
         getCourseName() );
   } // termina o método displayMessage

} // fim da classe GradeBook
// Fig. 3.11: GradeBookTest.Java
// construtor GradeBook utilizado para especificar o nome do curso na
// hora em que cada objeto GradeBook é criado.

public class GradeBookTest
{
   // método main inicia a execução do programa
   public static void main( String args[] )
   { 
      // cria objeto GradeBook
      GradeBook gradeBook1 = new GradeBook(         
         "CS101 Introduction to Java Programming" );
      GradeBook gradeBook2 = new GradeBook(         
         "CS102 Data Structures in Java" );         

      // exibe valor inicial de courseName para cada GradeBook
      System.out.printf( "gradeBook1 course name is: %s\n",
         gradeBook1.getCourseName() );
      System.out.printf( "gradeBook2 course name is: %s\n",
         gradeBook2.getCourseName() );
   } // fim de main

} // fim da classe GradeBookTest


/
adriano_si

Qual a edição do Deitel e qual página está isso aí ???

hackum

6 edição; página 69 e 70.

douglaskd
aqui voce criou um construtor:

 public GradeBook(String autor, String nome)  
     {  
         courseName = nome;  
         courseAutor = autor;  
     }

para usa-lo, quantos parâmetros você tem que passar? 2... correto?

// aqui eu criei 1 objeto passando 2 parâmetros...
GradeBook gradeBook1 = new GradeBook("aprendendo java", "hackum");

// e aqui eu mostrei as informações do gradeBook1...
System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName());
System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseAutor());

// agora vou criar um segundo objeto:
GradeBook gradeBook2 = new GradeBook("Tentando aprender java", "Douglas");

// e aqui eu mostrei as informações do gradeBook2...
System.out.printf("O nome do curso: %s\n",gradeBook2.getCourseName());
System.out.printf("O nome do curso: %s\n",gradeBook2.getCourseAutor());

conseguiu entender?

Jeferson_Manetti

vou tentar…

e o seguinte… oq e um construtor… e o metodo q constroi a classe (obvio)… ele e chamado qnd vc utiliza o new…
td classe possui um por padrão ate mesmo qnd vc n declara ele… a propria jvm “entende” q existe um e chama ele ao criar uma classe… por exemplo qnd vc faz isso Minha classe = new MinhaClasse(); sem nd no meio dos parenteses significa construtor padrão =)
oq acontece qnd vc cria o seu proprio construtor… q foi oq vc fez… ele sobrescreve esse padrão e a jvm utiliza oq vc criou…
sendo assim qnd vc faz isso new GradeBook(“WebDesign”); ele ira tentar chamar um construtor com apenas 1 parametro e a sua classe possui um construtor com 2… logo isso ira causar um erro…

segunda coisa…
td vez q vc utiliza o comando new ele cria um objeto novo (chamando o cosntrutor)… logo qnd vc faz:

GradeBook gradeBook1 = new GradeBook(“WebDesign”);

GradeBook gradeBook2 = new GradeBook(“Gustavo”);

A jvm cria 2 objetos o gradeBook1 e o gradeBook2… (na verdade da erro por causa do construtor =D)

vc deveria fazer assim:

GradeBook gradeBook = new GradeBook(“WebDesign”,“Gustavo”);

isso ira criar um obj gradeBook… depois e so:

System.out.printf(“O nome do curso: %s\n”,gradeBook.getCourseName());

System.out.printf(“Autor do curso: %s”,gradeBook.getCourseAutor());

blz… tentei ser o mais simples possivel espero q entenda…

t+ abs

hackum

Agora sim… Eu consigui entender e passar os parametros e aparecer na tela. Sensacional! Quando eu acabar de ler o livro do Java, quero ser igual a voces, ensinar pessoas leigas e que estão aprendendo. Portanto Resolvido

E… obrigado por me ajudar. Voces sabem que seram recompesados com isso: aprendendo novamente, o q se torna um ótimo profissional. No mais obrigado.

Criado 7 de janeiro de 2011
Ultima resposta 7 de jan. de 2011
Respostas 11
Participantes 6