J'ai écrit une fonction en Java et je veux que cette fonction renvoie plusieurs valeurs. Sauf utilisation de tableau et de structure, existe-t-il un moyen de renvoyer plusieurs valeurs?
Mon code:
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 ;
}
En Java, lorsque vous souhaitez qu'une fonction renvoie plusieurs valeurs, vous devez
Dans votre cas, vous devez clairement définir une classe Show
pouvant contenir les champs name
, quantity
et price
:
public class Show {
private String name;
private int price;
// add other fields, constructor and accessors
}
puis changez votre fonction en
public Show test(){
...
return new Show(GoodNameShow,QuantityShow ,GoodUnitPriceShow) ;
J'ai développé une approche très basique pour faire face à ce genre de situation.
J'ai utilisé une logique de seperator in Strings.
Par exemple, si vous devez retourner dans la même fonction 1. int value 2. valeur double 3. Valeur de chaîne
vous pouvez utiliser une chaîne de séparation
Par exemple, ",.," ce type de chaîne n'apparaît généralement pas.
Vous pouvez retourner une chaîne composée de toutes les valeurs séparées par ce séparateur "<valeur int>,., <Double valeur>,., <Valeur chaîne>"
et convertir en types équivalents dans lesquels la fonction a été appelée à l'aide de String.split (separtor) [index]
Référez-vous au code suivant pour une explication -
séparateur utilisé = ",.,"
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);
}
}
Cette approche peut être utilisée comme raccourci si vous ne souhaitez pas augmenter le nombre de classes uniquement pour les retours de fonction.
Cela dépend de la situation d’une situation à l’autre.