Caros, como fazer o menu principal para esse tipo de problema. O que eu quero é pegar a placa do carro (utilizando o Scanner), e se automovel for = a carro ele me retornar o valor do metodo obterValorPedagio.
import java.util.*;
package automoveis;
public class Principal {
publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);System.out.println("Digite o numero da placa: ");Stringdados=teclado.next();System.out.println("Digite o automovel: ");//parei aqui!!!!!}
Andre, boa tarde! A minha duvida é a seguinte! Eu preciso chamar o método obterValorPedagio referente a cada tipo de veiculo digitado: Ex: Se o veiculo for igual a MOTO ele pega o metodo obterValorPedagio da classe Moto e me retorna o valor 2
publicdoubleobterValorPedagio(){
return2; }
ou se ele for igual a Carro ele me retona o valor 4
publicdoubleobterValorPedagio(){
return4; }
Obrigado!!
Mephy
seria algo como
Veiculo v = new Veiculo();
teclado.nextLine(); // quebra linha pro scanner funcionar
String tipoVeiculo = teclado.nextLine();
if (tipoVeiculo.equalsIgnoreCase("carro"){
v = new Carro();
} else {
v = new Moto();
}
System.out.println("O valor do pedágio é: " + v.obterValorPedagio());
ou não entendi sua dúvida?
A
Andre_Cruz
Merphi, boa tarde! Seria isso mesmo, só que na hora de compilar ele me dá o seguinte erro:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
[color=red] Cannot instantiate the type Veiculo
Syntax error on token ")", ) expected after this token
at automoveis.Principal.main(Principal.java:10)[/color]
importjava.util.Scanner;publicclassPrincipal{publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);Veiculov=newVeiculo();teclado.nextLine();// quebra linha pro scanner funcionar StringtipoVeiculo=teclado.nextLine();if(tipoVeiculo.equalsIgnoreCase("carro"){v=newCarro();}else{v=newMoto();}System.out.println("O valor do pedágio é: "+v.obterValorPedagio());}}
M
marcio_gs
-No modelo atual você tem que criar as classes Veiculo, Carro e Moto.
-A classe Veiculo deveria ser abstrata, o que impediria a criação da instância dela na linha 10.
-O else não deveria ser aplicavo para criar uma instância de moto, deveria haver um outro if verificando se o valor é realmente moto e por fim você diria no else que não encontrou veículo compatível com o valor informado.
-Eu trocaria as classes e utilizaria enum. O único objetivo da classe é fornecer o valor do pegágio, um enum faz isso de forma mais simples(lembre-se do KISS)
A
Andre_Cruz
Caros, não estou conseguindo fazer com que o programa rode. Segue erro abaixo!!
importjava.util.Scanner;publicclassPrincipal{publicstaticvoidmain(Stringargs[]){Scannerteclado=newScanner(System.in);Veiculov=newVeiculo();teclado.nextLine();// quebra linha pro scanner funcionar StringtipoVeiculo=teclado.nextLine();if(tipoVeiculo.equalsIgnoreCase("carro")){v=newCarro();}if(tipoVeiculo.equalsIgnoreCase("Moto")){v=newMoto();}if(tipoVeiculo.equalsIgnoreCase("Caminhao")){v=newCaminhao();}else{System.out.print("Operacao inválida!");}System.out.println("O valor do pedágio é: "+v.obterValorPedagio());}}
não instancie o objeto v, use somente a declaração:
Veiculo v;
if (/* compara com carro */)
v = new Carro();
else if (/* compara com moto */)
v= new Moto();
else
System.out.println("erro");
System.exit(0);
não tinha reparado que Veiculo é uma classe abstrata ‘-’