编写有关Java /问题的基本租车程序

时间:2018-10-25 22:48:43

标签: java loops if-statement summary sentinel

所以我很困惑,只是在寻求帮助: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 个答案:

答案 0 :(得分:0)

请注意,'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'是ASCII49。确实,我们可以执行与“反向”将ASCII 49转换为等效字符,并在下一行显示1

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

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

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

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