-1

互联网服务提供商为其客户提供三种不同的订阅优惠:

• Offer A: For $9.95 per month 10 hours of access are provided. Additional hours are $2.00 per hour 
• Offer B: For $13.95 per month 20 hours of access are provided. Additional hours are $1.00 per hour 
• Offer C: For $19.95 per month unlimited access is provided.

编写一个程序 Internet.java,获取客户已购买的商品(A、B 或 C)和使用的小时数。然后它应该显示总费用。

> java Internet A 20
The total charges: $29.95

我已经编写了我的代码,但由于某种原因它一直显示错误的输出:

public class Internet {
    public static void main(String [] args){
        String offer = args[0];
        int hours = Integer.parseInt(args[1]); 
        String error = "error";
        charge(offer,hours);

    }
        public static double charge(String offer, int hours){
            char c = offer.charAt(0);
            double PackA = 9.95;          
            double PackB = 13.95;
            double PackC = 19.95;
        if (c == 'A'){
            PackA = (hours - 10)*2.00;
            System.out.println("the total charges: " + PackA);
            return PackA;
        }
        else if(c == 'B'){
            PackB = (hours - 20)*1.00;
            System.out.println("the total charges: " + PackB);
            return PackB;
        }
        else if (c == 'C') {
            System.out.println("the total charges: " + PackC);
            return PackC;
        }
        return error;

    }
}
4

4 回答 4

3

您似乎忘记将基本费率添加到案例 A 和 B。

PackA += (hours - 10)*2.00;
于 2013-10-31T18:54:27.490 回答
1

您试图在您的收费函数结束时返回一个名为“错误”的未声明变量。

您的收费函数也意味着返回一个双精度,因此返回字符串 'error' 也不起作用。

于 2013-10-31T18:53:11.437 回答
1

您正在用计算结果覆盖包装的起始值。
这个:

PackA = (hours - 10)*2.00;

将覆盖PackA.

你想要的是这样的:

PackA += (hours - 10)*2.00;

+=运算符是简写,PackA = PackA + (hours - 10)*2.00; 它将在您的计算中包含报价的原始值。

对事情做同样的事情PackB

于 2013-10-31T18:56:03.637 回答
0

从函数定义中删除 Satic

    public double charge(String offer, int hours)
于 2013-10-31T19:03:13.883 回答