Problema com instancia de novo objeto

7 respostas
carloshsamaral

Pessoal o meu professor pediu pra fazer um trabalho, com 3 classes, carro, moto e veiculos sendo a veiculos a principal e não sendo possivel ser instanciada, fiz o trablho só que estou em um erro que eu não consigui elimitar, na hora de instancia o novo objeto de m1 ele passa da primeira instanciação do objeto, não sei pq... alguem poderia dar uma força?

@Edit

1º observação : cada classe tem q ter 5 construtores
2º observação : tem q instanciar 3 objetos de cada classe ( Moto e carro )
3º observação : tipo de motor da moto tem q ser 2 ou 4 ....

package exec;

import java.util.Scanner;

import entity.Carro;
import entity.Moto;

public class Executavel {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		Validacao v = new Validacao();
		Carro c1 = new Carro();
		//Criação do objeto c1
		
		
		System.out.print("Digite a Marca do Carro 1: ");
		c1.setMarca(input.nextLine());
		
		System.out.print("Digite a Modelo do Carro 1: ");
		c1.setModelo(input.nextLine());
		
		System.out.print("Digite o numero de rodas do Carro 1: ");
		c1.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a potência do Carro 1: ");
		c1.setPotencia(v.verifPotencia());
		
		System.out.print("Digite a quantidade de cilindros do Carro 1: ");
		c1.setCilindros(v.verifCilindros());
		
		System.out.print("Digite o preco do Carro 1: ");
		c1.setPreco(v.verifPreco());
		
		System.out.print("Digite a Quantidade de passageiros do Carro 1: ");
		c1.setQtdPassageiros(v.verifPassegeiros());
		
		System.out.print("Digite Tipo de combustivel do Carro 1: ");
		c1.setTipoCombustivel(input.nextLine());

		//criacao do obj c2
		// Quantidade de pessoas
		Carro c2 = new Carro(6);
		System.out.print("Digite a Marca do Carro 2: ");
		c2.setMarca(input.nextLine());
		
		System.out.print("Digite a Modelo do Carro 2: ");
		c2.setModelo(input.nextLine());
		
		System.out.print("Digite o numero de rodas do Carro 2: ");
		c2.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a potência do Carro 2: ");
		c2.setPotencia(v.verifPotencia());
		
		System.out.print("Digite o preco do Carro 2: ");
		c2.setPreco(v.verifPreco());
		
		System.out.print("Digite o tipo de combustivel do Carro 2: ");
		c2.setTipoCombustivel(input.nextLine());
		
		//criação do objc3		
		// tipo de combustivel
		Carro c3 = new Carro("Flex");
		
		System.out.print("Digite a Marca do Carro 3: ");
		c3.setMarca(input.nextLine());
		
		System.out.print("Digite a Modelo do Carro 3: ");
		c3.setModelo(input.nextLine());
		
		System.out.print("Digite o numero de rodas do Carro 3: ");
		c3.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a potência do Carro 3: ");
		c3.setPotencia(v.verifPotencia());
		
		System.out.print("Digite a quantidade de cilindros do Carro 3: ");
		c3.setCilindros(v.verifCilindros());
		
		System.out.print("Digite o preco do Carro 3: ");
		c3.setPreco(v.verifPreco());
		
		System.out.print("Digite a quantidade de passageiros do Carro 3: ");
		c3.setQtdPassageiros(input.nextInt());
		
		System.out.print("Objetos do tipo Carro criado !! Agora criação dos objetos Moto\n\n\n");
		
		//criacao do m1
		Moto m1 = new Moto();
		
		System.out.print("Digite a Modelo da moto 1: ");
		m1.setModelo(input.nextLine());
		
		System.out.print("Digite a Marca da moto 1: ");
		m1.setMarca(input.nextLine());
		
		System.out.print("Digite o preco do da moto 1: ");
		m1.setPreco(v.verifPreco());
		
		System.out.print("Digite a potência da moto 1: ");
		m1.setPotencia(v.verifPotencia());
		
		System.out.print("Digite o numero de rodas da moto 1: ");
		m1.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a quantidade de cilindros da moto 1: ");
		m1.setCilindros(v.verifCilindros());
		
		System.out.print("Digite a velocidade máxima da moto 1: ");
		m1.setVelocidadeMaxima(v.verifVelMax());
		
		System.out.print("Digite o tipo do motor da moto 1: ");
		m1.setTipoMotor(v.verifTipoMotor());	
		
		//criacao do m2
		//Qtidade de cilindros
		Moto m2 = new Moto(2);
		
		System.out.print("Digite a Marca da moto 2: ");
		m2.setMarca(input.nextLine());
		
		System.out.print("Digite a Modelo da moto 2: ");
		m2.setModelo(input.nextLine());
		
		System.out.print("Digite o preco do da moto 2: ");
		m2.setPreco(v.verifPreco());
		
		System.out.print("Digite a potência da moto 2: ");
		m2.setPotencia(v.verifPotencia());
		
		System.out.print("Digite o numero de rodas da moto 2: ");
		m2.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a quantidade de cilindros da moto 2: ");
		m2.setCilindros(v.verifCilindros());
		
		System.out.print("Digite a velocidade máxima da moto 2: ");
		m2.setVelocidadeMaxima(v.verifVelMax());
		
		System.out.print("Digite o tipo do motor da moto 2: ");
		m2.setTipoMotor(v.verifTipoMotor());
		
		//criacao do m3
		//Velocidade max e quantidade de cilindros
		Moto m3 = new Moto(220, 4);
		
		System.out.print("Digite a Marca da moto 3: ");
		m3.setMarca(input.nextLine());
		
		System.out.print("Digite a Modelo da moto 3: ");
		m3.setModelo(input.nextLine());
		
		System.out.print("Digite o preco do da moto 3: ");
		m3.setPreco(v.verifPreco());
		
		System.out.print("Digite a potência da moto 3: ");
		m3.setPotencia(v.verifPotencia());
		
		System.out.print("Digite o numero de rodas da moto 3: ");
		m3.setNumeroRodas(v.verifNumeroRodas());
		
		System.out.print("Digite a quantidade de cilindros da moto 3: ");
		m3.setCilindros(v.verifCilindros());
		
		System.out.print("Digite a velocidade máxima da moto 3: ");
		m3.setVelocidadeMaxima(v.verifVelMax());
		
		System.out.print("Digite o tipo do motor da moto 3: ");
		m3.setTipoMotor(v.verifTipoMotor());	
		
		System.out.println(c1+"\n"+c2+"\n"+c3+"\n"+m1+"\n"+m2+"\n"+m3);
		
	}
}
package exec;

import java.util.Scanner;

public class Validacao {
	public int verifTipoMotor() {
		try {
			Scanner input = new Scanner(System.in);
			int a = input.nextInt();
			if (a == 2 || a == 4) {
				return a;
			} else {
				System.out.println("Digite um numero valido 2 ou 4\n Digite o numero de tipo de motor correto: ");
				return verifTipoMotor();
			}
		} catch (Exception e) {
			System.out
					.println("Só é permitidos numeros inteiros 2 ou 4 para Tipo de motor");
			return verifTipoMotor();
		}
	}

	public int verifCilindros() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros");
			System.out.println("Digite a quantidade de cilindros correto: ");
			return verifCilindros();
		}

	}
	
	public int verifNumeroRodas() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros");
			System.out.println("Digite o numero de rodas correto: ");
			return verifNumeroRodas();
		}

	}
	
	public int verifPotencia() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros");
			System.out.println("Digite a potencia correta: ");
			return verifPotencia();
		}

	}
	
	public double verifPreco() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros e com ponto flutuante '.' ");
			System.out.println("Digite o preco correto: ");
			return verifPreco();
		}

	}
	
	public int verifVelMax() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros");
			System.out.println("Digite a velocidade maxima correta: .");
			return verifVelMax();
		}

	}
	
	public int verifPassegeiros() {
		try {
			Scanner input = new Scanner(System.in);
			return input.nextInt();
		} catch (Exception e) {
			System.out.println("Só é permitidos numeros inteiros");
			System.out.println("Digite a quantidade de passageiros correta: ");
			return verifPassegeiros();
		}

	}
}
package entity;

public class Carro extends Veiculos {
	private String tipoCombustivel;
	private Integer qtdPassageiros;
	
	public void cadastrar(String combustivel, Integer passageiros, Double valor){
		this.tipoCombustivel = combustivel;
		this.qtdPassageiros = passageiros;
	}
	
	public int potenciaPorCilindro(Integer potencia,Integer cilindros){
		return potencia/cilindros;
	}
	
	
	public double reajustePreco(Double percentual){
		this.setPreco((((this.getPreco()*percentual)/100)+this.getPreco()));
		return getPreco();
	}

	public String getTipoCombustivel() {
		return tipoCombustivel;
	}

	public void setTipoCombustivel(String tipoCombustivel) {
		this.tipoCombustivel = tipoCombustivel;
	}

	public Integer getQtdPassageiros() {
		return qtdPassageiros;
	}

	public void setQtdPassageiros(Integer qtdPassageiros) {
		this.qtdPassageiros = qtdPassageiros;
	}

	
	public Carro() {
		// TODO Auto-generated constructor stub
	}

	
	
	public Carro(String tipoCombustivel, Integer qtdPassageiros) {
		super();
		this.tipoCombustivel = tipoCombustivel;
		this.qtdPassageiros = qtdPassageiros;
	}
	
	

	public Carro(Integer cilindros, Integer numeroRodas, String marca,
			String modelo, Integer potencia, String tipoCombustivel,
			Integer qtdPassageiros) {
		super(cilindros, numeroRodas, marca, modelo, potencia);
		this.tipoCombustivel = tipoCombustivel;
		this.qtdPassageiros = qtdPassageiros;
	}

	public Carro(String tipoCombustivel) {
		super();
		this.tipoCombustivel = tipoCombustivel;
	}

	public Carro(Integer qtdPassageiros) {
		super();
		this.qtdPassageiros = qtdPassageiros;
	}

	@Override
	public String toString() {
		return "[Carro Marca: "+getMarca()+" Modelo: "+getModelo()+" Preço: "
				+" Tipo de Combustivel: "+getTipoCombustivel()+" Potencia: "+getPotencia()
				+" Cilindros: "+getCilindros()+" Numero de Rodas: "+getNumeroRodas()
				+" Passageiros: "+getQtdPassageiros()+"]";
	}
	
	
	
}
package entity;

import java.util.Scanner;

public class Moto extends Veiculos{
	private Integer velocidadeMaxima;
	private Integer tipoMotor;
	
	public void cadastrar(Integer maxima, Integer motor){
		this.velocidadeMaxima = maxima;
		this.tipoMotor = motor;
	}
	
	public int potenciaPorCilindro(Integer potencia,Integer cilindros){
		return potencia/cilindros;
	}
	
	public int velocidadePorCilindro(Integer cilindro,Integer velocidade){
		return velocidade/cilindro;
	}

	public Integer getVelocidadeMaxima() {
		return velocidadeMaxima;
	}

	public void setVelocidadeMaxima(Integer velocidadeMaxima) {
		this.velocidadeMaxima = velocidadeMaxima;
	}

	public Integer getTipoMotor() {
		return tipoMotor;
	}

	public void setTipoMotor(Integer tipoMotor) {
		this.tipoMotor = tipoMotor;
	}
	
	public Moto() {
		// TODO Auto-generated constructor stub
	}

	public Moto(Integer velocidadeMaxima, Integer tipoMotor) {
		super();
		this.velocidadeMaxima = velocidadeMaxima;
		this.tipoMotor = tipoMotor;
	}

	public Moto(Integer tipoMotor) {
		super();
		this.tipoMotor = tipoMotor;
	}

	public Moto(Integer cilindros, Integer numeroRodas, String marca,
			String modelo, Integer potencia, Integer velocidadeMaxima) {
		super(cilindros, numeroRodas, marca, modelo, potencia);
		this.velocidadeMaxima = velocidadeMaxima;
	}

	public Moto(Integer cilindros, Integer numeroRodas, String marca,
			String modelo, Integer potencia, Integer velocidadeMaxima,
			Integer tipoMotor) {
		super(cilindros, numeroRodas, marca, modelo, potencia);
		this.velocidadeMaxima = velocidadeMaxima;
		this.tipoMotor = tipoMotor;
	}

	@Override
	public String toString() {
		return "[Moto Marca: "+getMarca()+" Modelo: "+getModelo()+" Preço: "+getPreco()
				+" Tipo de Motor: "+getTipoMotor()+" Potencia: "+getPotencia()
				+" Cilindros: "+getCilindros()+" Numero de Rodas: "+getNumeroRodas()
				+" Velocidade Máxima: "+getVelocidadeMaxima()+"]";
	}
		
}
package entity;

public abstract class Veiculos {

	private Integer cilindros;
	private Integer numeroRodas;
	private String marca;
	private String modelo;
	private Integer potencia;
	private Double preco;
	
	
	
	public Double getPreco() {
		return preco;
	}

	public void setPreco(Double preco) {
		this.preco = preco;
	}

	@Override
	public String toString() {
		return "[Cilindros: "+this.cilindros+" Numero de Rodas: "
				+this.numeroRodas+" Marca: "+this.marca+" Modelo "+this.modelo+" Potência "+this.potencia+"]";
	}
	
	public Veiculos() {
		// TODO Auto-generated constructor stub
	}

	public Veiculos(Integer cilindros, Integer numeroRodas, String marca,
			String modelo, Integer potencia) {
		super();
		this.cilindros = cilindros;
		this.numeroRodas = numeroRodas;
		this.marca = marca;
		this.modelo = modelo;
		this.potencia = potencia;
	}

	public Integer getCilindros() {
		return cilindros;
	}

	public void setCilindros(Integer cilindros) {
		this.cilindros = cilindros;
	}

	public Integer getNumeroRodas() {
		return numeroRodas;
	}

	public void setNumeroRodas(Integer numeroRodas) {
		this.numeroRodas = numeroRodas;
	}

	public String getMarca() {
		return marca;
	}

	public void setMarca(String marca) {
		this.marca = marca;
	}

	public String getModelo() {
		return modelo;
	}

	public void setModelo(String modelo) {
		this.modelo = modelo;
	}

	public Integer getPotencia() {
		return potencia;
	}

	public void setPotencia(Integer potencia) {
		this.potencia = potencia;
	}

	
	
	
}

7 Respostas

Rodrigo_Sasaki

Como assim passa da primeira?

carloshsamaral

Digão, ela exibe a mensagem e não pega os dados, tentei declarar a váriavel e depois atribuila dentro do set como está no codigo acima que eu vou modificar agora, sendo que na frente ele da erro em outra parte …

Tipo aparece a mensagem de inserção de Modelo, e pula pra mensagem de inserção de Marca

Rodrigo_Sasaki
Que que é esse ponto e vírgula sobrando aí?
//criacao do m1  
        Moto m1 = new Moto();  
          
        System.out.print("Digite a Modelo da moto 1: ");  
        m1.setModelo(input.nextLine();); // Nessa linha
carloshsamaral
digaoneves:
Que que é esse ponto e vírgula sobrando aí?
//criacao do m1  
        Moto m1 = new Moto();  
          
        System.out.print("Digite a Modelo da moto 1: ");  
        m1.setModelo(input.nextLine();); // Nessa linha

Foi pq eu editei aqui e colei o input de cima hahaha ignore ele ... vou arruamr

carloshsamaral

Alguma alma ?

tgcmv

Cara eu rodei teu código aqui (sem alterar uma virgula sequer) e rodou normal. Pegou todos os dados e imprimiu no final

[Carro Marca: marcacarro 1 Modelo: modelo carro 1 Preço: Tipo de Combustivel: gas Potencia: 10 Cilindros: 20 Numero de Rodas: 5 Passageiros: 5]
[Carro Marca: marca carro 2 Modelo: modelo carro 2 Preço: Tipo de Combustivel: 1 Potencia: 1 Cilindros: null Numero de Rodas: 22 Passageiros: 6]
[Carro Marca: carro 3 Modelo: c3 Preço: Tipo de Combustivel: Flex Potencia: 3 Cilindros: 4 Numero de Rodas: 3 Passageiros: 6]
[Moto Marca: m1 Modelo: Preço: 1.0 Tipo de Motor: 2 Potencia: 1 Cilindros: 1 Numero de Rodas: 1 Velocidade Máxima: 1]
[Moto Marca: 6 Modelo: 4 Preço: 5.0 Tipo de Motor: 4 Potencia: 655 Cilindros: 54 Numero de Rodas: 4 Velocidade Máxima: 45]
[Moto Marca: 54 Modelo: 54 Preço: 54.0 Tipo de Motor: 4 Potencia: 5 Cilindros: 5 Numero de Rodas: 5 Velocidade Máxima: 5]

Qual sua duvida. Qual o erro que ocorre? Teste com apenas um carro e uma moto. Pois ficar inserindo esse monte de dados é um saco. :smiley:

Uma sugestão. Se vc quiser cadastrar n carros, crie um vetor de carros e cadastre dentro de um laço. Evite ao extremo duplicar código.

Ao invés de:

System.out.print("Digite a Marca do Carro 1: "); c1.setMarca(input.nextLine());... System.out.print("Digite a Marca do Carro 2: "); c1.setMarca(input.nextLine()); ...
Faça algo como:

int n for(...){ ou while(...){ System.out.print("Digite a Marca do Carro" + n+ ":" );

Se tiver tempo sobrando que tal estudar interfaces gráficas? :smiley: Boa sorte ai no trabalho

rodrigoaramburu

carloshsamaral, pelo que entendi já tive um problema parecido por causa do nextLine(), dependendo do que você chamar em seguida ele pula a próxima leitura, pelo que sei é por causa do \n, sempre prefiro o next se for ler somente uma palavra, mas olha esse post que pode te ajudar http://www.guj.com.br/java/253243-problemas-com-string-em-classe-scanner#1316491

Criado 20 de setembro de 2012
Ultima resposta 23 de set. de 2012
Respostas 7
Participantes 4