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 cursospublicclassGradeBook{privateStringcourseName;//nome do curso para esse GradeBookprivateStringcourseAutor;//nome do autor para esse GradeBook//construtorpublicGradeBook(Stringautor,Stringnome){courseName=nome;courseAutor=autor;}//método para configurar o nome do cursopublicvoidsetCourseName(Stringnome){courseName=nome;//configura o nome do curso}//método para recuperarpublicStringgetCourseName(){returncourseName;}publicvoidsetCourseAutor(Stringautor){courseAutor=autor;}publicStringgetCourseAutor(){returncourseAutor;}}
//GradeBookTest.java//Chama GradeBook e chamar seus respectivos valores e depois seta-losimportjava.util.Scanner;//importa a classe ScannerpublicclassGradeBookTest{//inicialização do programapublicstaticvoidmain(Stringargs[]){GradeBookgradeBook1=newGradeBook("WebDesign");GradeBookgradeBook2=newGradeBook("Gustavo");//Cria Scanner para obter dados a partir da janela de comandoScannerinput=newScanner(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 ?
GradeBookgradeBook1=newGradeBook("Autor do livro WebDesign","WebDesign");
F
felipevs
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.publicclassGradeBook{privateStringcourseName;// nome do curso para esse GradeBook// construtor inicializa courseName com String fornecido como argumentopublicGradeBook(Stringname){courseName=name;// inicializa courseName}// termina construtor// método para configurar o nome do cursopublicvoidsetCourseName(Stringname){courseName=name;// armazena o nome do curso}// termina o método setCourseName// método para recuperar o nome do cursopublicStringgetCourseName(){returncourseName;}// termina o método getCourseName// exibe uma mensagem de boas-vindas para o usuário GradeBookpublicvoiddisplayMessage(){// essa instrução chama getCourseName para obter o// nome do curso que esse GradeBook representaSystem.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.publicclassGradeBookTest{// método main inicia a execução do programapublicstaticvoidmain(Stringargs[]){// cria objeto GradeBookGradeBookgradeBook1=newGradeBook("CS101 Introduction to Java Programming");GradeBookgradeBook2=newGradeBook("CS102 Data Structures in Java");// exibe valor inicial de courseName para cada GradeBookSystem.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
aquivocecriouumconstrutor:publicGradeBook(Stringautor,Stringnome){courseName=nome;courseAutor=autor;}parausa-lo,quantosparâmetrosvocêtemquepassar?2...correto?// aqui eu criei 1 objeto passando 2 parâmetros...GradeBookgradeBook1=newGradeBook("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:GradeBookgradeBook2=newGradeBook("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.