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);
}
}
- Comment puis-je corriger mes instructions IF pour obtenir des résultats mathématiques appropriés?
- comment pourrais-je le faire en boucle pour mettre plusieurs informations??
- comment faire des données récapitulatives?
- comment puis-je arrondir le Total à seulement deux décimales?
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.