代码显示错误的输出

时间:2013-10-31 18:49:38

标签: java

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

• 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 个答案:

答案 0 :(得分:3)

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

PackA += (hours - 10)*2.00;

答案 1 :(得分:1)

您试图在充电功能结束时返回名为“错误”的未声明变量。

你的收费函数也意味着返回一个double,所以返回字符串'error'也行不通。

答案 2 :(得分:1)

您将根据计算结果覆盖包的起始值 这样:

PackA = (hours - 10)*2.00;

将覆盖PackA中的任何现有值。

你想要的是这个:

PackA += (hours - 10)*2.00;

+=运算符是PackA = PackA + (hours - 10)*2.00;的简写 其中包括计算中要约的原始值。

PackB的事情做同样的事。

答案 3 :(得分:0)

从功能定义中删除Satic

    public double charge(String offer, int hours)