从Java中的单个方法返回两个不同的对象

时间:2017-10-06 19:25:45

标签: java

您好我正在尝试返回两个数组,1作为字符串,另一个作为float; 两个都回来 我在网上搜索它很混乱,我是oops的新手

public String[][]  loadcost(String[][] arr2, int tcount) {

        int f1 = 1;
        int f2 = 0;
        int[] costarr = null ;


        while (f2 < tcount){

            arr2[f1][f2] = cost.nextLine();
            costarr[f2] = Integer.parseInt (arr2[f1][f2]);
            f2 = f2 + 1;                            
        }

        Arrays.sort(costarr);
        return arr2 , costarr ;

我的原始请求是对二维数组进行排序,它使用我在网上得到的代码

BBB 444  DDD 098  FF 19.01

想要使用第二列

进行排序

4 个答案:

答案 0 :(得分:7)

您需要创建一个包含两个所需类型数组的对象,然后从该方法返回该对象,因为方法只能返回一个对象。

class MyObjectName {
  String[] stringArray;
  Float[] floatArray;
}

public MyObjectName loadcost(String[][] arr2, int tcount) {
   .....
}

希望有所帮助。

答案 1 :(得分:3)

使用包装器类包装两个数组,并返回:

public class Wrapper {
    public final String[] strings;
    public final float[] floats;

    public Wrapper(String[] strings, float[] floats) {
        this.strings = strings;
        this.floats = floats;
    }

}

您的方法的返回类型为Wrapper,并返回new Wrapper(arr2, costarr)

public Wrapper  loadcost(String[][] arr2, int tcount) {

        int f1 = 1;
        int f2 = 0;
        float[] costarr = null ;


        while (f2 < tcount){

            arr2[f1][f2] = cost.nextLine();
            costarr[f2] = Float.parseFloat (arr2[f1][f2]);
            f2 = f2 + 1;                            
        }

        Arrays.sort(costarr);
        return new Wrapper(arr2, costarr)
}

(顺便说一下,我制作了costarr float[]而不是int[]。)

然后,您可以使用以下命令访问包装的数组:

wrapper.floats //float array
wrapper.strings //String array

答案 2 :(得分:1)

在Java中,你不能返回两个值(这不是python:P)。但是,您可以创建一个仅用于将值保持在一起的对象。这个tecnique被称为封装。

有关详细信息,请查看以下链接https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html

答案 3 :(得分:0)

public class myarrayl {

        String [][] arr;
        int [] costarr;

    }

        public myarrayl loadcost(String[][] arr2, int tcount) {

            int f1 = 1;
            int f2 = 0;
            int[] costarr = null ;
            myarrayl content = null;    

            while (f2 < tcount){

                arr2[f1][f2] = cost.nextLine();
                costarr[f2] = Integer.parseInt (arr2[f1][f2]);
                f2 = f2 + 1;

            }

            Arrays.sort(costarr);
            content.arr = arr2;
                    content.costarr = costarr;
            return content;

    }

访问