您好我正在尝试返回两个数组,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想要使用第二列
进行排序答案 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;
}
访问