【问题标题】:How to return 3 strings from one method in Java [duplicate]如何从Java中的一种方法返回3个字符串[重复]
【发布时间】:2018-02-24 19:34:53
【问题描述】:

我在这方面遇到了一些困难。我需要退还我工人阶级中工人的正常(40 小时)和加班费(>40)以及 payTotal。我的工人类是我的 Person 类的子类。我还没有完全完成它,但我想知道我是否在这门课上朝着正确的方向前进。这是我当前方法的代码

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);

我们被告知要让这个方法返回一个字符串,所以我不太确定如何返回它。我看过一些建议使用数组的帖子,但是如果稍后我必须将这些值(常规、加班、支付总额)传递给我的工作构造函数,那么我能否让构造函数区分数组中的三个字符串? 谢谢

【问题讨论】:

  • 要返回超过 1 个东西,您需要将所有东西粘贴到 1 个对象中。但是,您将其插入什么对象取决于很多事情。如果它们密切相关并且你有一个固定的数量,你可以为每个部分创建一个包含字段的类,然后返回该类的一个实例。你也可以把它们放在一个 Array/ArrayList 中,然后再挑选出来。

标签: java string methods return subclass


【解决方案1】:

如果方法的返回类型必须是字符串,那么唯一可能的解决方案是使用分隔符(可能是逗号)将它们连接起来,然后根据需要进行拆分。但是当然,只有在方法的签名不能更改时才应该这样做。如果可能,通过返回一个 Object 或一个字符串数组来更改应该首选的返回类型。

【讨论】:

    【解决方案2】:

    返回一个包含三个字符串的数组是 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);
    }
    

    如果您使用三个以上的字段,则使用构造函数可能不是最好的方法,因为传递参数的顺序可能容易出错。
    setter 或 fluent builder 方法可能更可取。

    【讨论】:

    • 我的 Worker 构造函数使用 super() 调用 Person 的构造函数,然后去设置其余的字段。方向说明,“displayWeeklyPay 应标明正常工资的小时数 (40) 以及加班工资的总和小时数以及总工资和总工资。”我不应该为我不认为的每个常规、加班和总工资进行硬编码/获取和设置。只需调用该方法并让它返回每个
    【解决方案3】:

    多种选择:

    • 简单地返回一个字符串a + "/" + b + "/" + c(坏主意)
    • 返回一个数组或List&lt;String&gt;

    推荐的选项:创建一个“环绕”这三个值的特定类。并且您的方法返回该类的一个实例!

    但为了记录:不要只创建一个包含三个其他人都可以读取和写入的字段的类。。而是通过构造函数调用设置字段值;并有 getter 方法来获取他们的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 2016-05-19
      • 2020-07-05
      • 1970-01-01
      • 2015-10-09
      • 2017-07-04
      相关资源
      最近更新 更多