Estou com a seguinte dificuldade criei duas classes para aprender a desenvolver em Java.
o objetivo é receber as informações que inseri em um retorno printout.
Segue as classes que criei: class Carro e AppTaxi
publicclassCarro{privateStringmodelo;privateStringfabricante;privateStringpais;privateStringcor;privateintqtdPortas;privateintanoFabri;privateStringarcondicionado;//ModelopublicvoidatribuiModeloCarro(Stringmodelo){this.modelo=modelo;}//FabricantepublicvoidatribuiFabricanteCarro(Stringfabricante){this.fabricante=fabricante;}//CorpublicvoidatribuiCorCarro(Stringcor){this.cor=cor;}//PaispublicvoidatribuipaisCarro(Stringpais){this.pais=pais;}//Quantidade de PortaspublicvoidatribuiportasCarro(intqtdPortas){this.qtdPortas=qtdPortas;}//Ano da fabricaçãopublicvoidatribuianoFabriCarro(intanoFabri){this.anoFabri=anoFabri;}//ArcondicionadopublicvoidatribuiArcondicionadoCarro(Stringarcondicionado){this.arcondicionado=arcondicionado;}//Retorna ModelopublicStringretornaModeloCarro(){returnmodelo;}//Retorna FabricantepublicStringretornaFabricante(){returnfabricante;}//Retorna PaispublicStringretornaPaisCarro(){returnpais;}//Retorna CorpublicStringretornacorCarro(){returncor;}//Retorna ArcondicionadopublicStringretornaArcondicionadoCarro(){returnarcondicionado;}//Retorna QUantidade de PortaspublicintretornaQuantidadePortasCarro(){returnqtdPortas;}//Retorna Ano de GabricaçãopublicintretornaAnoFabricaçãoCarro(){returnanoFabri;}publicvoidexibeDadosCarro(){System.out.printf("Dados do Carro: \n%s\n",retornaModeloCarro(),retornaFabricante(),retornaPaisCarro());}}importjava.util.Scanner;publicclassAppTaxi{@SuppressWarnings("resource")publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);CarronovoCarro=newCarro();System.out.println("Digite o Modelo:");StringnomeModelo=input.nextLine();novoCarro.atribuiModeloCarro(nomeModelo);System.out.println();System.out.println("Digite o Fabricante:");StringnomeFabricante=input.nextLine();novoCarro.atribuiModeloCarro(nomeFabricante);System.out.println();System.out.println("Digite o pais:");StringnomePais=input.nextLine();novoCarro.atribuiModeloCarro(nomePais);System.out.println();novoCarro.exibeDadosCarro();}}
Porem o retorno que obtive após digitar 3 informações foi:
Digite o Modelo:
Palio
Digite o Fabricante:
Fiat
Digite o pais:
Brasil
Retorno do Programa:
Dados do Carro:
Brasil
Poderiam me ajudar com esta dúvida e o porque ocorreu isto?
Usa a convenção da linguagem pelo menos
Le um pouco as apostilas da Caelum, é bom pra começar
TalonNoxus1 like
Você ja viu onde você esta inserindo os dados?
Você esta adicionando o fabricante e o pais no modelo…
D
Diego_Rodrigues_Brun
Olá! pior não tinha veisto pequeno detalhe onde esta atribuindo as informações todas iguais.
Ok alterei esta informação e o resultado foi:
Digite o Modelo:
Palio
Digite o Fabricante:
Fiat
Digite o pais:
Brasil
Retorno:
Dados do Carro:
Palio
D
Diego_Rodrigues_Brun
Boa Tarde Igomes!
Cara realmente acho que o sistema esta completamente fora dos padrões e convenções, e pretendo melhorar isso com o tempo atualmente estou lendo o livro do deitel para aprender e realmente acho muito legal os materiais da caelum.
Mas ao mesmo tempo que leio estes materiais gosto de arriscar um algo mais com o objetivo de aprender.
Obrigado!
D
Diego_Rodrigues_Brun
Boa Tarde TalonNoxus!
Consegui usando aquele seu primeiro apontamento.
E depois usando a tentativa e erro com a outra classe.
Segue as classes modificadas:
public class Carro {
privateStringmodelo;privateStringfabricante;privateStringpais;privateStringcor;privateintqtdPortas;privateintanoFabri;privateStringarcondicionado;//ModelopublicvoidatribuiModeloCarro(Stringmodelo){this.modelo=modelo;}//FabricantepublicvoidatribuiFabricanteCarro(Stringfabricante){this.fabricante=fabricante;}//CorpublicvoidatribuiCorCarro(Stringcor){this.cor=cor;}//PaispublicvoidatribuipaisCarro(Stringpais){this.pais=pais;}//Quantidade de PortaspublicvoidatribuiportasCarro(intqtdPortas){this.qtdPortas=qtdPortas;}//Ano da fabricaçãopublicvoidatribuianoFabriCarro(intanoFabri){this.anoFabri=anoFabri;}//ArcondicionadopublicvoidatribuiArcondicionadoCarro(Stringarcondicionado){this.arcondicionado=arcondicionado;}//Retorna ModelopublicStringretornaModeloCarro(){returnmodelo;}//Retorna FabricantepublicStringretornaFabricante(){returnfabricante;}//Retorna PaispublicStringretornaPaisCarro(){returnpais;}//Retorna CorpublicStringretornacorCarro(){returncor;}//Retorna ArcondicionadopublicStringretornaArcondicionadoCarro(){returnarcondicionado;}//Retorna QUantidade de PortaspublicintretornaQuantidadePortasCarro(){returnqtdPortas;}//Retorna Ano de GabricaçãopublicintretornaAnoFabricaçãoCarro(){returnanoFabri;}publicvoidexibeDadosCarro(){System.out.printf("Dados do Carro: \n%s\n",retornaModeloCarro()+"\n"+retornaFabricante()+"\n"+retornaPaisCarro());}
}
import java.util.Scanner;
public class AppTaxi {
@SuppressWarnings("resource")publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);CarronovoCarro=newCarro();System.out.println("Digite o Modelo:");StringnomeModelo=input.nextLine();novoCarro.atribuiModeloCarro(nomeModelo);System.out.println();System.out.println("Digite o Fabricante:");StringnomeFabricante=input.nextLine();novoCarro.atribuiFabricanteCarro(nomeFabricante);System.out.println();System.out.println("Digite o pais:");StringnomePais=input.nextLine();novoCarro.atribuipaisCarro(nomePais);System.out.println();novoCarro.exibeDadosCarro();}
}
TalonNoxus1 like
No método de exibeDadosCarro(), você tem um %s ali, o que significa? Significa que a sua primeira variavel ou método do tipo String irá ocupar aquele lugar do %s, você tem 3 métodos, logo deveria ter %s duas vezes que representa a String e um %d que representa um numero inteiro.
Você tem duas soluções:
Adicionar um %s e um %d no printf.
2)Substituir o printf por println e retirar o %s
D
Diego_Rodrigues_Brun
TalonNoxus,
Eu consegui fazer funcionar as classes.
Porem eu fico com a seguinte duvida, pois eu tive que passar todas as variaveis para o tipo string, porque não consegui aplicar o tipo inteiro no retorno.
segue o resultado:
@SuppressWarnings("resource")publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);CarronovoCarro=newCarro();System.out.println("Digite o Modelo:");StringnomeModelo=input.nextLine();novoCarro.atribuiModeloCarro(nomeModelo);System.out.println();System.out.println("Digite o Fabricante:");StringnomeFabricante=input.nextLine();novoCarro.atribuiFabricanteCarro(nomeFabricante);System.out.println();System.out.println("Digite o pais:");StringnomePais=input.nextLine();novoCarro.atribuipaisCarro(nomePais);System.out.println();System.out.println("Digite a Cor:");StringcorCarro=input.nextLine();novoCarro.atribuiCorCarro(corCarro);System.out.println();System.out.println("Carro Tem Arcondicionado?");Stringar=input.nextLine();novoCarro.atribuiArcondicionadoCarro(ar);System.out.println();System.out.println("Digite a quantidade de Portas");StringnPortas=input.nextLine();novoCarro.atribuiportasCarro(nPortas);System.out.println();System.out.println("Ano Fabricação");StringanoFabric=input.nextLine();novoCarro.atribuianoFabriCarro(anoFabric);System.out.println();novoCarro.exibeDadosCarro();}
}
import javax.swing.JOptionPane;
public class Carro {
privateStringmodelo,fabricante,pais,cor,qtdPortas,anoFabri,arcondicionado;//ModelopublicvoidatribuiModeloCarro(Stringmodelo){this.modelo=modelo;}//FabricantepublicvoidatribuiFabricanteCarro(Stringfabricante){this.fabricante=fabricante;}//CorpublicvoidatribuiCorCarro(Stringcor){this.cor=cor;}//PaispublicvoidatribuipaisCarro(Stringpais){this.pais=pais;}//Quantidade de PortaspublicvoidatribuiportasCarro(StringqtdPortas){this.qtdPortas=qtdPortas;}//Ano da fabricaçãopublicvoidatribuianoFabriCarro(StringanoFabri){this.anoFabri=anoFabri;}//ArcondicionadopublicvoidatribuiArcondicionadoCarro(Stringarcondicionado){this.arcondicionado=arcondicionado;}//Retorna ModelopublicStringretornaModeloCarro(){returnmodelo;}//Retorna FabricantepublicStringretornaFabricante(){returnfabricante;}//Retorna PaispublicStringretornaPaisCarro(){returnpais;}//Retorna CorpublicStringretornacorCarro(){returncor;}//Retorna ArcondicionadopublicStringretornaArcondicionadoCarro(){returnarcondicionado;}//Retorna Quantidade de PortaspublicStringretornaQuantidadePortasCarro(){returnqtdPortas;}//Retorna Ano de GabricaçãopublicStringretornaAnoFabricaçãoCarro(){returnanoFabri;}publicvoidexibeDadosCarro(){JOptionPane.showMessageDialog(null,"Modelo:"+retornaModeloCarro()+"\n"+"Fabricante:"+retornaFabricante()+"\n"+"Pais:"+retornaPaisCarro()+"\n"+"Cor:"+retornacorCarro()+"\n"+"Ar-Condicionado:"+retornaArcondicionadoCarro()+"\n"+"Portas:"+retornaQuantidadePortasCarro()+"\n"+"Ano de Fabricação:"+retornaAnoFabricaçãoCarro());}
}
TalonNoxus
Não conseguiu atribuir um valor int ao método ou não conseguiu retornar um valor int do método?
D
Diego_Rodrigues_Brun
Eu fiz a alteração na classe para a quantidade e data para o tipo int, porem na classe principal fica aparecendo este erro:
@SuppressWarnings("resource")publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);CarronovoCarro=newCarro();System.out.println("Digite o Modelo:");StringnomeModelo=input.nextLine();novoCarro.atribuiModeloCarro(nomeModelo);System.out.println();System.out.println("Digite o Fabricante:");StringnomeFabricante=input.nextLine();novoCarro.atribuiFabricanteCarro(nomeFabricante);System.out.println();System.out.println("Digite o pais:");StringnomePais=input.nextLine();novoCarro.atribuipaisCarro(nomePais);System.out.println();System.out.println("Digite a Cor:");StringcorCarro=input.nextLine();novoCarro.atribuiCorCarro(corCarro);System.out.println();System.out.println("Carro Tem Arcondicionado?");Stringar=input.nextLine();novoCarro.atribuiArcondicionadoCarro(ar);System.out.println();System.out.println("Digite a quantidade de Portas");intnPortas=input.nextLine();novoCarro.atribuiportasCarro(nPortas);System.out.println();System.out.println("Ano Fabricação");intanoFabric=input.nextLine();novoCarro.atribuianoFabriCarro(anoFabric);System.out.println();System.out.println("Ano Fabricação");intanoModel=input.nextLine();novoCarro.atribuianoModelo(anoModel);System.out.println();novoCarro.exibeDadosCarro();}
}
import javax.swing.JOptionPane;
public class Carro {
privateStringmodelo,fabricante,pais,cor,arcondicionado;intqtdPortas,anoFabri,anoModelo;//ModelopublicvoidatribuiModeloCarro(Stringmodelo){this.modelo=modelo;}//FabricantepublicvoidatribuiFabricanteCarro(Stringfabricante){this.fabricante=fabricante;}//CorpublicvoidatribuiCorCarro(Stringcor){this.cor=cor;}//PaispublicvoidatribuipaisCarro(Stringpais){this.pais=pais;}//Quantidade de PortaspublicvoidatribuiportasCarro(intqtdPortas){this.qtdPortas=qtdPortas;}//Ano da fabricaçãopublicvoidatribuianoFabriCarro(intanoFabri){this.anoFabri=anoFabri;}//Ano do ModelopublicvoidatribuianoModelo(intanoModelo){this.anoModelo=anoModelo;}//ArcondicionadopublicvoidatribuiArcondicionadoCarro(Stringarcondicionado){this.arcondicionado=arcondicionado;}//Retorna ModelopublicStringretornaModeloCarro(){returnmodelo;}//Retorna FabricantepublicStringretornaFabricante(){returnfabricante;}//Retorna PaispublicStringretornaPaisCarro(){returnpais;}//Retorna CorpublicStringretornacorCarro(){returncor;}//Retorna ArcondicionadopublicStringretornaArcondicionadoCarro(){returnarcondicionado;}//Retorna Quantidade de PortaspublicintretornaQuantidadePortasCarro(){returnqtdPortas;}//Retorna Ano de GabricaçãopublicintretornaAnoFabricaçãoCarro(){returnanoFabri;}//Retorna Ano de GabricaçãopublicintretornaAnoModeloCarro(){returnanoModelo;}publicvoidexibeDadosCarro(){JOptionPane.showMessageDialog(null,"Modelo:"+retornaModeloCarro()+"\n"+"Fabricante:"+retornaFabricante()+"\n"+"Pais:"+retornaPaisCarro()+"\n"+"Cor:"+retornacorCarro()+"\n"+"Ar-Condicionado:"+retornaArcondicionadoCarro()+"\n"+"Portas:"+retornaQuantidadePortasCarro()+"\n"+"Ano de Fabricação:"+retornaAnoFabricaçãoCarro()+"\n"+"Ano do Modelo:"+retornaAnoModeloCarro());}
}
Solucao aceita
TalonNoxus1 like
O Erro diz: Não é possivel converter de String para int.
O método nextLine() retorna uma String, e você não pode passar uma String para um número inteiro, mesmo a String tendo o valor 2.
O que vocé pode fazer nesse caso é usar o método nextInt() ao inves de nextLine().
Mas supondo que você tenha um numero em um tipo String e que você quer que o seu atributo do tipo int tenha esse valor, o que você pode fazer é o seguinte: