在 java / 问题上编写一个基本的汽车租赁程序

Write a Basic Car rental program on java / problems

所以我非常困惑,只是在寻求帮助:L。这就是我导师的指示。

说明: 使用标记值循环。

向每个用户询问:

计算(对于每个客户):

三种不同的租赁选择,价格不同:经济型 @ 31.76,轿车 @ 40.32,SUV @ 47.56。 [注意:仅考虑全天单位(无小时费率)]。

销售税为总额的 6%。

创建汇总数据:

此外,包括 IPO、算法和桌面检查值(设计文档)。

{我要做什么和我的问题}

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. 如何修正我的 IF 语句以获得正确的数学结果?
  2. 如何让它循环输入多个信息?
  3. 如何制作汇总数据?
  4. 如何将总计四舍五入到小数点后两位?

注意'1'实际上是字符1不是整数1 .它们实际上非常不同。

在 Java(以及 C#)中,intchar 类型可以相互转换。

为了说明,下面实际上打印了 49:

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

类似地,下面的打印 true:

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

如您所见,该字符正在隐式转换为等效的 int 值。

要理解为什么 '1' 特别等于 49,请查看字符的表示方式。特别是,查看 ASCII chart(这是字符编码的通用约定)——原来字符 '1' 是 ASCII 49。实际上,我们可以做与上面相同的事情 "in reverse" 到 "convert" ASCII 49 到它的等效字符,下面的行打印 1:

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

要了解这种转换的工作原理,您可能需要阅读 this rather excellent article linked to in the comments. If you're curious about how this works in C#, you may also want to read this question

还有一点:当你做 DailyFee=(int)31.76 时,将其转换为 int 实际上会 "drop" 小数点后的所有内容,所以这与编写 [=25] 没有什么不同=].这是因为 31 是一个整数,而 31.76 是 而不是 (它是一个有理数)。

风格上的一个小问题:您可以考虑在此处使用 switch 语句。