Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JosimarNew

Obter a marcha do carro baseado na velocidade atual

Recommended Posts

Olá amigos do fórum.

 

O meu raciocínio abaixo está correto? Quero obter a marcha atual do carro, (objeto carro) baseando-se na velocidade atual do mesmo.

Se tem uma forma mais correta de faze-lo por favor, fiquem a vontade para postar.

//CLASSE CARRO
class carro{
   String cor,
          modelo;
   double velocidadeAtual = 0,
          velocidadeMaxima;
   boolean ligado = false;

   void liga(){
      ligado = true;
   }

   void desliga(){
      ligado = false;
   }

   double acelera(double vel){
      if(ligado){
         if(vel >= this.velocidadeMaxima){
            this.velocidadeAtual = velocidadeMaxima;
         }else{
            this.velocidadeAtual += vel;
         }
      }else{
         return 0;
      }
      return this.velocidadeAtual;
   }

   int marcha(){
      double marchaAtual = 0, qtdMarchas = 0;

      if(this.velocidadeAtual < 0){
         marchaAtual = -1;
         qtdMarchas = 0;
      }else if(this.velocidadeAtual == 0){
         marchaAtual = 0;
         qtdMarchas = 0;
      }else{
         double velPorMarch = 0;
         if(this.velocidadeMaxima > 80 && this.velocidadeMaxima < 120){
            velPorMarch = this.velocidadeMaxima / 5;
            qtdMarchas = 5;
         }else if(this.velocidadeMaxima <= 80){
            velPorMarch = this.velocidadeMaxima / 4;
            qtdMarchas = 4;
         }
         marchaAtual = ((velPorMarch + velocidadeAtual) / this.velocidadeMaxima) * qtdMarchas;
      }
      if((int)marchaAtual > 5){
         return 5;
      }else{
         return (int)marchaAtual;
      }
   }

   void estado(){
      System.out.println("Cor: "+this.cor);
      System.out.println("Modelo: "+this.modelo);
      System.out.println("Vel Máxima: "+this.velocidadeMaxima);
      System.out.println("Vel Atual: "+this.velocidadeAtual);
      System.out.println("Ligado: "+this.ligado);
   }
}

Testando o carro

class testa_carro{
   public static void main(String[] args){
      carro meuFusca;
      meuFusca = new carro();

      meuFusca.cor = "Branco";
      meuFusca.modelo = "Sei lá";
      meuFusca.velocidadeMaxima = 90;

      meuFusca.liga();

      meuFusca.acelera(30);
      meuFusca.estado();
      System.out.println("Meu fusca está na marcha: "+meuFusca.marcha());
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Neste ponto, se a velocidadeMaxima for maior de 120, não entra em nenhuma das condições.
if(this.velocidadeMaxima > 80 && this.velocidadeMaxima < 120){
  velPorMarch = this.velocidadeMaxima / 5;
  qtdMarchas = 5;
}else if(this.velocidadeMaxima <= 80){
  velPorMarch = this.velocidadeMaxima / 4;
  qtdMarchas = 4;
}

Acho que o calculo seria um pouco mais simples para encontrar a marchar atual:

marchaAtual = velocidadeAtual) / velPorMarch;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Neste ponto, se a velocidadeMaxima for maior de 120, não entra em nenhuma das condições.
if(this.velocidadeMaxima > 80 && this.velocidadeMaxima < 120){
  velPorMarch = this.velocidadeMaxima / 5;
  qtdMarchas = 5;
}else if(this.velocidadeMaxima <= 80){
  velPorMarch = this.velocidadeMaxima / 4;
  qtdMarchas = 4;
}

Acho que o calculo seria um pouco mais simples para encontrar a marchar atual:

marchaAtual = velocidadeAtual) / velPorMarch;

 

 

 

Verdade

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.