【问题标题】:Write a Basic Car rental program on java / problems写一个关于java/问题的基本租车程序
【发布时间】:2018-10-25 22:48:43
【问题描述】:

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

说明: 使用哨兵值循环。

询问每个用户:

  • 车辆类型(可能使用字符串以外的其他内容,例如: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. 如何将总数四舍五入到小数点后两位?

【问题讨论】:

  • == 1, == 2. 不是 == '1'。
  • CarType 是一个 int,您正在尝试将其与 chars '1' 等进行比较...删除 's
  • 非常感谢我非常感谢您的帮助,我这样做了,但仍然,我的数学公式在尝试计算租用天数 (*) 加号 (+) 时似乎仍然关闭那 6%。
  • 请不要在问题得到回答后对其进行编辑,以便将来有类似问题的读者理解。
  • @EJoshuaS 但尚未完全回答。是否试图澄清接下来的两个问题?

标签: java loops if-statement summary sentinel


【解决方案1】:

注意'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。事实上,我们可以做与上面“相反”到“ convert" ASCII 49 到它的等效字符,下面的行打印1:

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

要了解这种转换的工作原理,您可能需要阅读this rather excellent article linked to in the comments。如果您对它在 C# 中的工作方式感到好奇,您可能还想阅读this question

还有一点:当您执行DailyFee=(int)31.76 时,将其转换为int 实际上会“删除”小数点后的所有内容,因此这与编写DailyFee = 31 没有什么不同。这是因为 31 是一个整数,而 31.76 不是 (它是一个有理数)。

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

【讨论】:

猜你喜欢
  • 2011-11-26
  • 2011-11-26
  • 1970-01-01
  • 2019-01-30
  • 2011-06-16
  • 2011-03-29
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
相关资源
最近更新 更多