Java Switch Statement,折扣百分比

时间:2014-02-05 18:40:50

标签: java switch-statement

我试图为我的程序创建一个switch语句。对于完全披露,这是明天到期的家庭作业。我应该使用switch语句为CD的总销售额分配折扣率。黄金15%的折扣,银10%,青铜5%和非会员0%。

到目前为止,这是我的计划。我还没有得到输出,但只要我不能通过这个开关,这应该不是问题。

public static void main(String[] args) {
   //Variables
    String firstName = null;
    String lastName = null;
    int songs;
    double cost;
    int membership;
    double serviceCharge;
    double productCharge;
    double baseCharge;
   //Keyboard input
   Scanner keyboard = new Scanner(System.in);

   //Gathering information from the user
   System.out.println("Enter your first name:");
   firstName = keyboard.nextLine();
   System.out.println("Enter your last name:");
   lastName = keyboard.nextLine();       
   System.out.println("Enter the number of songs downloaded:");
   songs = keyboard.nextInt();
   System.out.println("enter the cost per song:");
   cost = keyboard.nextDouble();
   System.out.println("Enter the status of membership:"
           + "3 represents a gold member"
           + "2 represents a silver member"
           + "1 represeents a bronze member:"
           + "0 represents a nonmember");
   membership = keyboard.nextInt();

   //Here is where the math starts
   baseCharge = cost * songs;

   serviceCharge = baseCharge;
   if (songs <= 8)
       serviceCharge = .07 * baseCharge;
   else if (songs > 8 && songs <= 15)
       serviceCharge = .04 * baseCharge;
   else if (songs > 15 && songs < 20)
       serviceCharge = .02 * baseCharge;
   else if (songs <= 20)
       serviceCharge = 0;

   productCharge = baseCharge + serviceCharge;

   switch (membership)
   {
       case 3: productCharge * .15;              
           break; 
       case 2: 
           break;
       case 1: 
           break;
       case 0:
           break;
       default:
           break;
   }

显然你不能在switch语句中使用double,但我迷路了。如何在不使用双倍的情况下分配百分比贴现率?你需要小数才能正确地计算数学。或者我是否完全错误地看待这个?

一旦我完成了程序的其余部分,这就是输出的样子。

输入您的名字: 约翰 输入您的姓氏: 母鹿 输入下载的歌曲数量: 8 输入每首歌曲的费用: 0.99 输入会员资格状态: 3代表金成员 2代表银成员 1代表青铜构件; 0表示非成员: 1 全名:John Doe 下载的歌曲数量:8 每首歌的价格:0.99美元 服务费:0.32美元 小计:7.60美元 税:0.36美元 总费用:7.58美元

对不起文字墙。非常感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:2)

您可以通过double / switch将折扣信息保存在case变量中:

   double discount = 0.0;//some default value

   switch (membership)
   {
       case 3: 
           discount = .15;              
           break; 
       case 2: 
           discount = .05
           break;
       //etc.
       default:
           discount = 0.0;//some default value
           break;
   }
   //now do the calculation using the discount variable
   double finalProductCharge = productCharge * (1.0 - discount);

答案 1 :(得分:0)

如果会员资格为3金,2代银,1代青铜,0代表零,你可以根据不计switch计算百分比,因为每个会员级别为5%。

final double discountPerMemberLevel = 0.05;

productCharge = baseCharge + serviceCharge;

double discount = membership * discountPerMemberLevel;
productCharge *= 1 - discount;

答案 2 :(得分:0)

productCharge * .15不是一个语句,这是switch所期望的语句,因此编译器会给你一条消息。下一步是检查switch语句的语法。无论如何,评估该表达式还没有达到任何目的。