Qual é o erro? [RESOLVIDO]

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:

[code]//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; 
}

}[/code]

[code]//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());	
	
}

}[/code]

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

Qual erro está sendo acusado?

Tenta assim:

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

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 …

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());

[quote=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()); [/quote]

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…

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:

[code]// 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[/code]

[code]// 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

/[/code]

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

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

[code]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());[/code]

conseguiu entender?

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

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.