【问题标题】:How to return two parameters in java [duplicate]如何在java中返回两个参数[重复]
【发布时间】:2016-05-17 07:00:52
【问题描述】:

我想打印一个人的名字和姓氏。问题是如何返回名字和姓氏。下面是我的代码。

package methodbasics;
import java.util.Scanner;

public class MethodBasics {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter Your FName :");
        String firstName = input.nextLine();
        System.out.print("Enter Your LName :");
        String lastName = input.nextLine();
        System.out.printf("Welcome %s %s!!!\n", printName(firstName,           lastName));
    }

    public static String printName(String firstName, String lastName){          
        return firstName, lastName; 
    }
}

【问题讨论】:

  • 使用数组或列表之类的容器,然后将这些值添加到其中并返回容器
  • return new String[] {firstName, lastName};
  • 使用这些属性创建一个Person 类,并从方法中返回该类的一个实例。
  • 一些非常好的回复可以在这里找到:stackoverflow.com/questions/15285270/…
  • 这些答案不适用于 OP 的 printf( %s %s )....

标签: java


【解决方案1】:
  1. 使用 Container 类,例如

    public class FirstAndLastName {
        String firstName;
        String lastName;
        ... // constructor and getter/setter
    }
    public static FirstAndLastName printName(String firstName, String lastName) {
        return new FirstAndLastName(firstName, lastName); 
    }
    public static void main(String[] args) {
        ...
        FirstAndLastName firstAndLastName = printName(firstName, lastName);
        ... firstAndLastName.getFirstName();
    
  2. 例如使用Listarray

    public static List<String> printName(String firstName, String lastName) {          
        return Arrays.asList(firstName, lastName); 
    }
    private static final int FIRST_NAME = 0;...
    public static void main(String[] args) {
        ...
        List list = printName(firstName, lastName);
        ... list.get(0)...list.get(FIRST_NAME);
    

    public static String[] printName(String firstName, String lastName) {          
        return new String[] {firstName, lastName}; 
    }
    private static final int FIRST_NAME = 0;...
    public static void main(String[] args) {
        ...
        String[] array = printName(firstName, lastName);
        ... array[0]...array[FIRST_NAME];
    
  3. 例如使用Map

    public static Map<String, String> printName(String firstName, String lastName) {  
        Map<String, String> result = new HashMap<>(2);
        result.put("firstName", firstName);           
        result.put("lastName", lastName);
        return result; 
    }
    public static void main(String[] args) {
        ...
        Map map = printName(firstName, lastName);
        ... map.get("firstName")...map.get("lastName");
    

【讨论】:

  • 您应该添加这些返回值在每个方法返回后如何被访问。
【解决方案2】:

您可以尝试创建类似对对象的东西,然后返回它。

public class Pair<A, B> {
  private A first;
  private B second;

  public Pair(A first, B second) {
    this.first = first;
    this.second = second;
  }

  ......
  ......
}

【讨论】:

    【解决方案3】:

    只需将变量连接成一个字符串:

    return firstName + " " + lastName;
    

    【讨论】:

    • 如果名字中有空格呢?
    • 它仍然可以正常工作。例如,如果姓氏是“Van Dyke”,名字是“Jack”,那么上面的代码将返回“Jack Van Dyke”。其他解决方案很棒,特别是如果编码人员仍然需要能够分别访问名字和姓氏。但如果他/她只是想打印组合名称,那么就像我上面建议的一样简单。
    • 为什么要投反对票,顺便说一句?这个解决方案很简单,但可以满足用户的需求......
    • 如果名字是 Eddy Wally,姓氏是 Van de walle。您的代码将返回 Eddy Wally Van de walle。您如何才能再次拆分此名称以仅获取名字?
    • 我投了反对票,因为我之前的评论。
    猜你喜欢
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2013-11-13
    相关资源
    最近更新 更多