在Java中返回多个值

时间:2012-11-15 08:01:33

标签: java function return

我用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 ;
}

2 个答案:

答案 0 :(得分:29)

在Java中,当您希望函数返回多个值时,您必须

  • 将这些值嵌入到您返回的对象中
  • 或更改传递给您的函数的对象

在您的情况下,您显然需要定义一个类Show,其中可能包含字段namequantityprice

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);

 }
}

当您不希望仅增加函数返回的类数时,此方法可用作快捷方式

取决于采取的方式的状况。