2017-10-20 14 views
-2

Je travaille sur un projet Java qui décrit une voiture roulant sur une distance donnée. Le lecteur de fonction a trois paramètres: un pour la distance parcourue, un pour le rapport x et un pour le rapport y. Voici une description de la fonction:Mise à jour des coordonnées X et Y en fonction d'une distance et d'un rapport?

entraînement (distance int, double xRatio, double yRatio) doit prendre la distance souhaitée de se déplacer comme un entier, et deux valeurs doubles qui, ensemble, définissent la direction en tant que rapport horizontal à distances verticales. Par exemple, si xRatio = 1 et yRatio = 2, pour toutes les 1 unité vers la droite (x positif), la voiture irait 2 unités vers le haut (y positif). Les valeurs négatives pour xRatio et yRatio correspondent à respectivement à gauche et à droite. Étant donné la distance et la direction, cette méthode devrait calculer correctement les coordonnées de fin (tronquées en entiers). Il devrait également soustraire correctement le montant du carburant utilisé. Si la distance spécifiée nécessite plus de quantité de carburant que la voiture a actuellement, la voiture devrait voyager aussi loin que possible jusqu'à ce qu'elle soit vide et imprimer ce texte sur la console: "Ne plus gaz après avoir conduit x miles " (avec la valeur correcte substituée en x). La méthode devrait renvoyer le nombre de miles qui ont été effectivement conduits.

Voici ce que je de la fonction d'entraînement jusqu'à présent:

public double drive(int distance, double xRatio, double yRatio) 
    { 
     double a = xRatio; 
     double b = yRatio; 
     double r = 0; 

     r = (a*a) + (b*b); 
     r = Math.sqrt(r); 

     double finalX = (xRatio * distance)/r; 
     double finalY = (yRatio * distance)/r; 

     return 0; 

    } 

J'ai les coordonnées finales de la voiture, mais je ne suis pas sûr de savoir comment commencer à travailler sur la façon dont le gaz est mis à jour pendant que la voiture voyage et comment l'arrêter si elle manque d'essence. Toute aide avec ceci serait appréciée.

+0

Est-ce une question mathématique ou une question de programmation? – shmosel

+0

Pourquoi retournez-vous 0? –

+0

Les deux je suppose. Une chose que j'espère trouver est la façon mathématique correcte d'utiliser la xRatio, yRatio et la distance pour obtenir les coordonnées de fin. Je crois que ce que j'ai maintenant est la bonne façon de faire cette partie, mais sinon je voudrais savoir. Il retourne 0 maintenant comme un espace réservé. Je ne connais pas encore la distance réelle parcourue, ce qui devrait être le retour de la méthode. – CooperHudnall

Répondre

0

gasRemaining est une variable qui représente les miles gauche que le gaz vous permettra de conduire

public double drive(int distance, double xRatio, double yRatio) 
{ 
    double a = xRatio; 
    double b = yRatio; 
    double r = 0; 

    r = (a*a) + (b*b); 
    r = Math.sqrt(r); 

if (distance > gasRemaining){ 
    system.out.println("Ran out of gas after driving " + gasRemaining + " miles"); 


    double finalX = (xRatio * gasRemaining)/r; 
    double finalY = (yRatio * gasRemaining)/r; 

    gasRemaining = 0; 

    return 0; 
} 

else { 
    double finalX = (xRatio * distance)/r; 
    double finalY = (yRatio * distance)/r; 

    gasRemaining = gasRemaining - distance; 

    return 0; 
} 
}