【问题标题】:How to return two objects in one method without using pair? [duplicate]如何在不使用pair的情况下以一种方法返回两个对象? [复制]
【发布时间】:2018-08-11 21:11:28
【问题描述】:

我想返回 mnreturn (m, n) 不起作用。有什么办法可以return 这两个值吗? 我不应该使用Pair,因为我还没有被教过。

public static void getTwoIntegers(MyInteger m, MyInteger n)
{
     Random rand = new Random();

     m = new MyInteger(rand.nextInt(10));
     n = new MyInteger(rand.nextInt(10));

}

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以返回array

    public static MyInteger[] getTwoIntegers(){
       Random rand = new Random();
       MyInteger m = new MyInteger(rand.nextInt(10));
       MyInteger n = new MyInteger(rand.nextInt(10));
       return new MyInteger[] {m,n};
    }
    

    【讨论】:

    • 我猜,mn 不应该是方法的参数,getTwoIntegers() {...} 会很有效。
    • @мυѕτавєւмo - 是的,没错。如果我们在数组中返回它,我们不需要它。谢谢,我已经更新了我的答案:)
    【解决方案2】:

    返回值之外的另一个概念。

    public static void getTwoIntegers(List<MyInteger> ret)
    {
         Random rand = new Random();
    
         MyInteger m = new MyInteger(rand.nextInt(10));
         MyInteger n = new MyInteger(rand.nextInt(10));
         ret.add(m);
         ret.add(n);
    }
    

    现在获得 3 或 4 个整数同样简单。

    【讨论】:

      【解决方案3】:

      我已经有一段时间没有写任何java代码了,但是你不能只使用一个数组吗?

      或者使用一些包装对象(你可以使用对象,对吧?)比如new SomeClass(m, n)

      更新

      数组:

      public static MyInteger[] getTwoIntegers(MyInteger m, MyInteger n)
      {
           Random rand = new Random();
      
           m = new MyInteger(rand.nextInt(10));
           n = new MyInteger(rand.nextInt(10));
           MyInteger[] result = {m, n};
           return result;
      }
      

      更新2

      对象:

      public static MyIntegerPair getTwoIntegers(MyInteger m, MyInteger n)
      {
           Random rand = new Random();
      
           m = new MyInteger(rand.nextInt(10));
           n = new MyInteger(rand.nextInt(10));
           return new MyIntegerPair(m, n);
      }
      
      public class MyIntegerPair {
          public MyInteger first;
          public MyInteger second;
          public MyIntegerPair(f, s) {
              this.first = f;
              this.second = s;
          }
      }
      

      【讨论】:

      • 很好,但是你在方法签名中使用了void,然后你使用了return
      • 是的,我只是从问题中复制粘贴代码:) 谢谢
      猜你喜欢
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      相关资源
      最近更新 更多