2012-02-13 61 views
0

讓我先說清楚這是用於分配的。我對編程非常陌生,因此非常感謝所有的指導。我必須計算的計劃是停車費爲3小時或以下的最低2.00美元,額外每小時0.5美分的停車費,以及每24小時10美元的上限。計劃必須顯示最近的客戶費用以及運行總額。必須初始化常量,必須使用Math.ceil,必須使用方法calculateCharges來解決每個客戶的費用。當我嘗試運行這個程序時,我會遇到超級錯誤,當你看到它時你可能會笑,但是我錯在哪裏?我不是在尋找答案,只是尋找如何正確編寫程序的邏輯。請幫忙!Java方法通過/有序邏輯查詢

package Parking; 

import java.util.Scanner; 

public class parking 
    { 
    private static final double THREE_HOURS = 2.00; 
    private static final double PER_HOUR_COST = .50; 
    private static final double WHOLE_DAY_COST = 10.00; 

    public static void main (String [] args) 
     { 
     double hoursParked = 0; 
     double cumulativeCharges = 0; 
     double storage1 = 0; 
     double storage2 = 0; 
     Scanner input = new Scanner(System.in); 


      System.out.print("\nThis program displays the charge for the most recent customer"); 
      System.out.print(" as well as the running total of yesterday's receipts\n"); 

      do 
      { System.out.printf("Enter an number between 1-24 for hours parked in garage or -1 to quit:"); 

       hoursParked = input.nextDouble(); 
      } 
      while((hoursParked > 0)&&(hoursParked <= 24)&&(hoursParked != -1)); 

       if(hoursParked <= 3) 
        System.out.printf("Most recent customer's charge was: %.2f\n" , THREE_HOURS); 
        storage1 += THREE_HOURS; 

       if(hoursParked >= 18.01) 
        System.out.printf("Most recent customer's charge was:%.2f\n" , WHOLE_DAY_COST); 
        storage2 += WHOLE_DAY_COST; 

       double result = calculateCharges(hoursParked * PER_HOUR_COST); 
        System.out.printf("Most recent customer charge was:%.2f\n" , result); 

       cumulativeCharges = storage1 + storage2; 
       System.out.printf("Running total of yesterday's receipts is:%.2f\n" , cumulativeCharges); 

     } // end main 

     public static double calculateCharges (double hoursParked) 
     { 
      Math.ceil(hoursParked); 

      double total = hoursParked * PER_HOUR_COST; 

      return total; 
     } // end method calculateCharges 
    } // end class parking 
+0

你是什麼意思的「超級錯誤」?他們是編譯錯誤嗎?程序是否編譯,但運行時會拋出異常?它運行但打印出意外的輸出?你需要準確地說出你所看到的錯誤。錯誤消息通常會讓您很好地指出問題出在哪裏。 – 2012-02-13 00:36:36

+0

這只是我嘗試運行該程序時看到的冰山一角:用法:javaw [-options] class [args ...] (執行類) 或javaw [-options] -jar jar文件[參數...] (執行jar文件) 其中選項包括: -server \t選擇「服務器」 VM -hotspot \t爲「服務器」的同義詞VM(已廢棄) 的默認的VM是服務器。 -cp <目錄和zip/jar文件的類搜索路徑> – Jremy 2012-02-13 00:55:09

+0

這沒有幫助,因爲我們不知道你在做什麼來產生這些錯誤。 – 2012-02-13 01:08:14

回答

0

在你的while條件中,第三個條件是無用的,因爲如果該值是正數,那必然意味着它不同於-1。

在您的功能中,您想要計算停車時間的成本,但是當您調用您的功能時,您將參數設爲成本而不是小時數。這是正常的嗎?因此,您將計算成本的成本,而不是對應於幾小時的成本。

public static double calculateCharges (double hoursParked) 

double result = calculateCharges(hoursParked * PER_HOUR_COST); 
0

這裏有幾件事情。

你的while條件在do循環結束時被檢查,這是什麼讓你在閱讀小時後突然停下來的。因此,要到達do循環之外的代碼(在此之後),唯一的辦法就是如果hoursParked爲-1。其次,如果條件不存在大括號,則只執行它後面的第一行,也就是說。 System.out.print的。因此,您的第一個條件將會執行(打印字符串),然後將2.00存儲在存儲1中。同樣,第二個if條件將執行(打印字符串),然後將10.00存儲到storage2中。

因爲hoursParked總是-1,所以您傳遞(-1 * .5)來計算Charge。您不存儲Math.ceil()的結果,因此它什麼都不做。您然後返回(-.5 * .5)= -.25。

cumulativeCharges只是在每種情況下都加2 + 10。

建議 - 確保您封裝要DO循環內執行的,只有你已經做hoursParked你的計算後,破解密碼。