如何编写一个关于java/问题的基本租车程序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (76)

说明:使用sentinel值循环。

询问每个用户:

  • 车辆类型(可以使用除弦以外的其他东西,例如:1代表经济型,2代表轿车等)
  • 租了几天

计算(对于每个客户):

  • 租金,
  • 税,
  • 总到期。

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

TOTAL的销售税为= 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. 如何将Total舍入到只有两位小数?
提问于
用户回答回答于

请注意,这'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图表 - 事实证明该字符'1'是ASCII 49.实际上,我们可以做同样的事情,我们在上面“反向”地将ASCII转换为“等效”字符,以及以下行打印1

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

还有一点:当你这样做时DailyFee=(int)31.76,将其转换为一个int实际上会“丢弃”小数点后的所有内容,所以这与写作没有什么不同DailyFee = 31。这是因为31是整数而31.76 不是(它是有理数)。

一个小的风格点:你可以考虑switch在这里使用一个声明。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动