Ecrire un programme de location de voiture de base sur java / problèmes


Donc je suis super confus et je cherche juste de l'aide :L. Voici ce que les instructions de mon instructeur étaient.

Instructions : Utilisez une boucle de valeur sentinelle.

Demandez à chaque utilisateur:

  • Type de véhicule (Peut utiliser autre chose que des chaînes, telles que: 1 pour l'économie, 2 pour la berline, etc.)
  • Jours loués

Calculez le (Pour chaque client):

  • Coût de location,
  • Impôts,
  • Total Raison.

Il existe trois options de location différentes avec des tarifs distincts: Economy @ 31.76, sedan @ 40.32, SUV @ 47.56. [Remarque: seules les unités de journée entière doivent être prises en compte (pas de taux horaires)].

La taxe de vente est = à 6% sur le TOTAL.

Créer des données récapitulatives avec:

  • Nombre de clients
  • Total de l'argent collecté.

Incluez également les valeurs IPO, algorithm et desk check (documents de conception).

{CE QUE JE DOIS ALLER ET MON QUESTION}

package yipe;

public class Umm {

    import java.util.*;

    int count = 0;
    static int CarType, days;
    static double DailyFee, Total;


    public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);

        System.out.print("What vehical would you like to rent?\n");
        System.out.println("Enter 1 for an economy car\n");
        System.out.println("Enter 2 for a sedan car\n");
        System.out.println("Enter 3 for an SUV");
        CarType = keyboard.nextInt();
        if (CarType == '1')
              DailyFee=(int)31.76;
            else if(CarType == '2')
              DailyFee=(int)40.32;
            else if(CarType == '3')
              DailyFee=(int)43.50;

        System.out.print("Please enter the number of days rented. (Example; 3) : ");
        days = keyboard.nextInt();

        Total = (DailyFee * days * 6/100);

        System.out.printf("The total amount due is $" + Total);

    }


}
  1. Comment puis-je corriger mes instructions IF pour obtenir des résultats mathématiques appropriés?
  2. comment pourrais-je le faire en boucle pour mettre plusieurs informations??
  3. comment faire des données récapitulatives?
  4. comment puis-je arrondir le Total à seulement deux décimales?
Author: EJoshuaS - Reinstate Monica, 2018-10-25

1 answers

Remarque que '1' est en fait le caractère 1, pas integer 1. Ils sont en fait très différents.

En Java (ainsi qu'en C#), les types int et char sont convertibles les uns aux autres.

Pour illustrer, ce qui suit imprime en fait 49:

public class HelloWorld
{
  public static void main(String[] args)
  {
    System.out.print((int)'1');
  }
}

De même, les impressions suivantes true:

System.out.println('1' == 49);

Comme vous pouvez le voir, le caractère est implicitement converti en une valeur int équivalente.

Pour comprendre pourquoi '1' est égal à 49 en particulier, regardez comment les caractères sont représentés. En particulier, regardez le ASCII chart (qui est une convention commune pour le codage de caractères) - il s'avère que le caractère '1' est ASCII 49. En effet, nous pouvons faire la même chose que nous avons fait ci-dessus "à l'envers" pour "convertir" ASCII 49 en son caractère équivalent, et la ligne suivante imprime 1:

System.out.println((char)49);

Pour comprendre comment fonctionne ce type de conversion, vous voudrez peut-être lire cet article plutôt excellent lié à dans les commentaires . Si vous êtes curieux de savoir comment cela fonctionne en C#, vous pouvez également lire cette question.

Un point de plus: lorsque vous faites DailyFee=(int)31.76, convertir cela en int "supprimera" tout après la virgule décimale, donc ce n'est pas différent que d'écrire DailyFee = 31. C'est parce que 31 est un entier alors que 31.76 est pas (c'est un nombre rationnel).

Un point stylistique mineur: vous pouvez envisager d'utiliser une instruction switch ici.

 1
Author: EJoshuaS - Reinstate Monica, 2018-10-26 13:20:58