2013-10-28 14 views
-4

我有麻煩試圖檢索一個已經在塊外部建立並調用內部的雙變量,但我想返回相同變量的值,以便我可以將其應用於計算。從塊中的變量被放入計算中,但拋出錯誤的讀數

,我想返回的變量是:

double quarter = 0; 

但是當我將其插入季度我第一個else/if語句,它插入在0,而不是在我的開關塊的價值。我能做些什麼來檢索價值?

 double quarter = 0; 

     //Date entry will be calculated by how much KW user enters 
     switch (input) 
     { 
      case "2/15/13": 
       quarter = kwUsed * 0.10; 
       break; 
      case "4/15/13": 
       quarter = kwUsed * 0.12; 
       break; 
      case "8/15/13": 
       quarter = kwUsed * 0.15; 
       break; 
      case "11/15/13": 
       quarter = kwUsed * 0.15; 
       break; 
      default: 
       System.out.println("Invalid date"); 
     } 


     //Declaring variables for calculations 
     double base = 0; 
     double over = 0; 
     double excess = 0; 

     double math1 = 0; 
     double math2 = 0; 


     //KW Calculations 
     if (kwUsed <= 350) 
     { 
      base = quarter; 

     }else if (kwUsed <= 500) 
     { 
      math1 = ((kwUsed - 350) * quarter); 
      base = ((kwUsed * quarter) - math1); 
      over = ((math1 * 0.1) + math1); 

     }else if (kwUsed > 500) 
     { 
      math2 = ((kwUsed - 350) * 0.1); 
      base = ((kwUsed * 0.1) - math2); 
      math2 = ((kwUsed -350) - 50); 
      over = ((math2 * 0.1) + (15 * 0.1)); 
      double math3 =((kwUsed - 500) * 0.1); 
      excess = ((math3 * 0.25) + math3); 

     } 

編輯澄清問題。

+0

我不明白。 – Maroun

+2

您已經發布了超過150行的代碼,其描述非常模糊。請說明您的問題,並在展示問題時儘可能縮短編碼。 (我懷疑你可能很容易管理少於50行) –

+0

如果輸入日期錯誤,那麼季度將不會被分配給.. –

回答

0

它必須是kwUsed = 0switch或輸入的日期是錯誤的。如果這些值是正確的,則quarter不能爲零。

double price = 0; 
switch (input) 
    { 
     case "2/15/13": 
      price = 0.10; 
      break; 
     case "4/15/13": 
      price = 0.12; 
      break; 
     case "8/15/13": 
      price = 0.15; 
      break; 
     case "11/15/13": 
      price = 0.15; 
      break; 
     default: 
      System.out.println("Invalid date"); 
    } 


    //Declaring variables for calculations 
    double base = 0; 
    double over = 0; 
    double excess = 0; 

    double math1 = 0; 
    double math2 = 0; 


    //KW Calculations 
    if (kwUsed <= 350) 
    { 
     base = kwUsed * price; 

    }else if (kwUsed <= 500) 
    { 
     math1 = ((kwUsed - 350) * price); 
     base = ((kwUsed * price) - math1); 
     over = ((math1 * 0.1) + math1); 

    }... 
+0

我在開關中更換了kwUsed = 0,但是我得到一個錯誤,說明所需int找到了兩倍。日期也完全按照我在報價中輸入的內容輸入。我做了一個系統打印,價值出來是我想要的,但是當我放置這個變量時,它會拋開計算。 – user2926620

+0

也許我沒有寫清楚我的答案。您不應將'kwUsed'的值替換爲'0'。我認爲它是'0',因爲你說你得到'quarter'的錯誤值。另外爲什麼你把你的'quarter'作爲測試值的'0.12'?季度值是根據'kwUsed'的值計算出來的,我認爲'kwUsed'不是'1',所以'quarter'可能會高於'0.12'。你能告訴我們,當你得到錯誤的結果時,'kwUsed'的價值是什麼? – majk

+0

0.12是該月「4/15/13」月份的費率,他們按照每千瓦計費。使用的kw值爲375.代碼的邏輯是,它們的充電速率爲350kw以下,剩餘容量高達500kw,額外充電0.1,高於500kw則爲0.25。如果用0.12代替「quarter」,結果應該是基於:42.0 over:3.3。如果剩下四分之一/如果狀態保持不變,則結果爲基數:15,750以上:1237.50,這沒有任何意義。 – user2926620