所以我很困惑,只是在寻求帮助:L。这就是我老师的指示。
说明: 使用前哨值循环。
向每个用户询问:
计算(针对每个客户):
共有三种不同的租金选项,分别为:经济@ 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);
}
}
答案 0 :(得分:0)
请注意,'1'
实际上是字符 1
,不是整数1
。它们实际上是非常不同的。
在Java(以及C#)中,int
和char
类型可以相互转换。
为说明起见,以下内容实际打印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
语句。