2017-09-15 139 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或一个字符串数组来改变返回类型。

相关问题