我用Java编写了一个函数,我想让这个函数返回多个值。除了使用数组和结构之外,有没有办法返回多个值?
我的代码:
String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x;
Cursor c = db.rawQuery(query, null);
if (c!= null && c.moveToFirst())
{
GoodNameShow = c.getString(0);
QuantityShow = c.getLong(1);
GoodUnitPriceShow = c.getLong(2);
return GoodNameShow,QuantityShow ,GoodUnitPriceShow ;
}
答案 0 :(得分:29)
在Java中,当您希望函数返回多个值时,您必须
在您的情况下,您显然需要定义一个类Show
,其中可能包含字段name
,quantity
和price
:
public class Show {
private String name;
private int price;
// add other fields, constructor and accessors
}
然后将您的功能更改为
public Show test(){
...
return new Show(GoodNameShow,QuantityShow ,GoodUnitPriceShow) ;
答案 1 :(得分:0)
我已经开发出一种非常基本的方法来处理这种情况。
我在字符串中使用了分隔符的逻辑。
例如,如果您需要返回相同的功能 1. int值 2.双倍价值 3.字符串值
您可以使用分隔符字符串
例如“,。,”这种字符串通常不会出现在任何地方。
您可以返回一个字符串,该字符串由此分隔符分隔的所有值组成 “< int value>,。,< double value>,。,< String value>”
并转换为使用 String.split(separtor)[index]
调用函数的等效类型请参阅以下代码以获取解释 -
separator used =“,。,”
public class TestMultipleReturns{
public static void main(String args[]){
String result = getMultipleValues();
int intval = Integer.parseInt(result.split(",.,")[0]);
double doubleval = Double.parseDouble(result.split(",.,")[1]);
String strval = result.split(",.,")[2];
}
public static String getMultipleValues(){
int intval = 231;//some int value
double doubleval = 3.14;//some double val
String strval = "hello";//some String val
return(intval+",.,"+doubleval+",.,"+strval);
}
}
当您不希望仅增加函数返回的类数时,此方法可用作快捷方式
取决于采取的方式的状况。