在main函数中返回一个数组和一个变量

时间:2018-04-09 18:58:57

标签: java arrays return return-value return-type

我有类似的功能

Class Return_two{
     public static void main(String args[]){
     int b=0;// Declare a variable
     int a []= new int[3];// Declare an array [both are return at the end of the user define function fun()]
      Return_two r=new Return_two();
       int result_store= r.fun(a,b);//where should I store the result meaning is it a normal variable or an array where I store the result?
   }
 public int [] fun (int[] array,int var)//may be this is not a good Return type to returning an array with a variable so what will be change in return type? 
 {    
      for(int counter=0;counter <array.length;counter++)
      { var=var+counter;
       }
       return( array,var);// Here how could I return this two value in main function?
   }
  }

现在,这就是我的问题。我想返回一个带有变量的数组,如上所述。但据我所知,可以返回数组或变量,但不能同时返回两者。或者可以返回一个或多个变量,将这些变量作为数组元素。但是如何在main函数中返回一个带变量的数组呢?

2 个答案:

答案 0 :(得分:3)

如果要创建多个值,请将它们包装在对象中。

(我无法从你发布的内容中得到一个有意义的名字)

class Result {
    private int[] a;
    private int b;

   public Result(int[] a, int b) {
      this.a = a;
      this.b = b;
   }
   //Getters for the instance variables
   public int[] getA() {
      return a;
   }
   public int getB() {
       return b;
   }
}

fun

结束时
return new Result(array, var);

一些最佳做法:

  1. 不要声明与参数同名的变量名称(a中的fun

  2. 在上面的Result类中,最好在数组a上创建副本,以避免类外的突变。

  3. 如果可能的话,不要使用数组并使用List(这会给你很大的灵活性)
  4. 修改

    您的来电者将会是

     Return_two r=new Return_two();
     Result result = r.fun(a, b); 
     result.getA();//Do whatever you want to do with the array
     result.getB();//Do whatever you want to do with that variable
    

    使用当前版本的(修改过的)代码,为什么要返回数组,因为它与传递给fun方法的相同?仅返回计算出的var将对您有用(因此返回类型可以只是int)。

    您还可以在一行fun中完成您的工作

    return (array.length * (array.length - 1)) / 2;
    

答案 1 :(得分:1)

Wrap these properties into a object, say 

    Public class FunModel
    {
        public int[] a;
        public int b;
    }

then you can return an instance of `FunModel`.

Or

you can use `Tuples`

------------------
Futher Explanation
 ------------------

此处的返回类型应为模型。 此模型应包含您要作为属性返回的所有内容。  您可以从方法中返回此模型。

    public class FunModel
    {
        public int[] a;
        public int b;

        public FunModel(int[] a, int b) {
            this.a = a;
            this.b = b;
        }
    }

该方法应返回此模型的实例。

public class ReturnTwo {

            public static void main(String args[]){
                int b=0;
                int a []= new int[3];
                ReturnTwo returnTwo = new ReturnTwo();
                FunModel funModel =  returnTwo.fun(a,b);
                //other processing
            }

            public FunModel fun (int[] array,int tempVar)
            {
                FunModel temp = new FunModel(array,tempVar);
                for(int counter=0;counter <array.length;counter++)
                {
                    temp.b = temp.b + counter;
                }
                return temp;// you return the model with different properties
            }
        }