2017-09-15 143 views
0

我在這方面遇到了一些困難。我需要將工人的正常工作時間(40小時)和加班工資(> 40)與payTotal一起退回。我的工人類是我的Person類的一個子類。我還沒有完成它,但我想知道,如果我正在與這個班級走向正確的方向。這是我對我目前的方法如何從Java中的一種方法返回3個字符串

String displayWeeklyPay(double hoursWorked){ 
    double overtime; 
    double regular; 
    String result; 
    if (hoursWorked <= 40) 
     { 
     payTotal = hourlyPayRate * hoursWorked; 
     regular = payTotal; 
     overtime = 0; 
     } 
    else{ 
     payTotal = (hourlyPayRate * 40) + ((hoursWorked - 40) * (hourlyPayRate * 1.5)); 
     regular = hourlyPayRate * 40; 
     overtime = ((hoursWorked - 40) * (hourlyPayRate * 1.5)); 
     } 
    String overT = String.valueOf(overtime); 
    String reg = String.valueOf(regular); 
    String totalPay = String.valueOf(payTotal); 

代碼我們被告知,使這個方法返回一個字符串,所以我不太清楚如何我想退貨。我見過一些提示數組的帖子,但是如果我必須將這些值(常規,超時,paytotal)傳遞給我的工作器構造函數,那麼我將能夠使構造函數區分數組中的三個字符串嗎? 謝謝

+0

要返回超過1個東西,您需要將所有東西粘貼到1個對象中。你堅持什麼對象取決於很多事情。如果他們的關係很密切,而且你有一定的金額,那麼你可以爲每一塊創建一個帶有字段的類,然後返回該類的一個實例。你也可以把它們粘在一個Array/ArrayList中,然後再選擇它們。 – Carcigenicate

回答

3

返回三個字符串的數組是clumsy:沒有意義且容易出錯。

您應該創建一個自定義類,它擁有三個String字段並在您的方法中返回它的一個實例。

你的方法能這般模樣:

public MyResult displayWeeklyPay(double hoursWorked){ 

    ...  
    String overT = String.valueOf(overtime); 
    String reg = String.valueOf(regular); 
    String totalPay = String.valueOf(payTotal); 
    return new MyResult(overT, reg, totalyPay); 
} 

如果使用三個以上的領域,使用構造可能不那麼容易的傳遞參數的順序可能會變得容易出錯的最佳方式。
一個二傳手或流利的建設者的方法可能是可取的。

+0

Worker的構造函數使用super()來調用Person的構造函數,然後去設置其餘的字段。方向州,「顯示每週支付應顯示正常工資的小時數(40)以及加班費總額和小時數以及合計工資總額。」我不應該硬編碼/得到,並設置每一個正常的,OT和總薪水,我不認爲。只需調用該方法並讓它每個都返回 –

2

各種選項:

  • 簡單的返回一個字符串a + "/" + b + "/" + c(壞主意)
  • 返回數組或List<String>

推薦的選項:創建一個特定的說,「包裹圍繞「這三個價值觀。你的方法返回該類的一個實例!

但是記錄:不要只創建一個三個字段,其他人都可以讀取寫入。而是通過構造函數調用設置字段值;並有getter方法來獲取他們的內容。

0

如果方法的返回類型必須是字符串,那麼只有可能的解決方案是使用分隔符(可能是逗號)將它們連接起來,然後根據需要進行拆分。但當然這應該只在方法的簽名不能改變時才能完成。如果可能,通過返回一個Object或一個字符串數組來改變返回類型。

相關問題