HELP! Utilizando Scanner

8 respostas
A

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 {

public static void main(String[] args) {
	Scanner teclado = new Scanner (System.in);
	System.out.println ("Digite o numero da placa: ");
	String dados = teclado.next();
	System.out.println("Digite o automovel: ");
	//parei aqui!!!!!
	


}

}

package automoveis;

public  abstract class Veiculo{
	private String placa;
	
	public Veiculo(){
		}
	
	public Veiculo(String placa){
		this.placa = placa;
	}
	

	public String getPlaca(){
		return this.placa;
	}

	public void setPlaca(String placa){
		this.placa = placa;
	}

	public abstract double obterValorPedagio();

}
package automoveis;

public class Carro extends Veiculo{
	
	public Carro(){
		super();
	}

	public Carro(String placa){
		super(placa);
	}

	//@override
	public double obterValorPedagio(){
		return 4;	
	}
}

8 Respostas

Andre_Rosa

Poderia esclarecer melhor qual é a sua dúvida?

abs,
André.

d34d_d3v1l

Também não compreendi sua dúvida!

A

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

public double obterValorPedagio(){
		return 2;	
	}

ou se ele for igual a Carro ele me retona o valor 4

public double obterValorPedagio(){
		return 4;	
	}

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

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]

import java.util.Scanner;   
  

public class Principal {
	

	public static void main(String[] args) {
		
		Scanner teclado = new Scanner (System.in);
		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());  
	}
}
M

-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

Caros, não estou conseguindo fazer com que o programa rode. Segue erro abaixo!!

import java.util.Scanner;   
  

public class Principal {
	

	public static void main(String args []) {
		
		Scanner teclado = new Scanner (System.in);
		Veiculo v = new Veiculo();   
		teclado.nextLine(); // quebra linha pro scanner funcionar   
		String tipoVeiculo = teclado.nextLine();   
		if (tipoVeiculo.equalsIgnoreCase("carro")){   
		   v = new Carro();   
		} 
		if (tipoVeiculo.equalsIgnoreCase("Moto")){
			v = new Moto ();
		}
		if (tipoVeiculo.equalsIgnoreCase("Caminhao")){
			v = new Caminhao (); 
		}
		else {   
			System.out.print("Operacao inválida!");     
		}   
		System.out.println("O valor do pedágio é: " + v.obterValorPedagio());  
	}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot instantiate the type Veiculo

	at automoveis.Principal.main(Principal.java:10)
Mephy

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 ‘-’

Criado 21 de abril de 2011
Ultima resposta 21 de abr. de 2011
Respostas 8
Participantes 5