2013-10-31 68 views
-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; 

    } 
} 
+0

使用调试器删除Satic看到执行 –

+2

是它显示什么输出过程中发生了什么事?你能指望什么? – Taylor

+5

我不明白它是如何显示错误的输出,因为它根本不编译(尝试从'charge'返回'error',一个错误类型的变量,甚至没有在该范围内声明) 。 – Boann

回答

1

您与您的计算结果覆盖你包的起始值。
此:

PackA = (hours - 10)*2.00;

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

你想是什么:

PackA += (hours - 10)*2.00;

+=运营商简写PackA = PackA + (hours - 10)*2.00; ,其中将包括在计算中提供的原始值。

PackB的事情做同样的事情。

1

你试图在你的充电功能的最后返回名为“错误”的未声明的变量。

你的收费函数也是为了返回一个double,所以返回字符串'错误'也不起作用。

+0

固定,我返回0,而不是谢谢:) – abedzantout

3

看来,你忘了加上基准利率的情况A和B.

PackA += (hours - 10)*2.00; 
+0

谢谢你工作:) – abedzantout

0

从函数定义

​​