Comment écrire correctement le code suivant?
public String toString(int[] position, int xOffset, int yOffset) {
String postn = String.format("[%d,%d]", position[0], position[1]);
String movm = String.format("[%d,%d]", xOffset, yOffset);
return (postn, movm);
}
L'erreur suivante s'est produite
movm cannot be returned.
Lorsque vous utilisez Java 8 , vous pouvez utiliser la classe Pair .
private static Pair<String, String> foo (/* some params */) {
final String val1 = ""; // some calculation
final String val2 = ""; // some other calculation
return new Pair<>(val1, val2);
}
Sinon, renvoyez simplement un tableau.
Il y a quatre méthodes auxquelles je peux penser pour implémenter ce scénario:
Créez une classe avec tous les attributs que vous souhaitez renvoyer, dans votre cas cela peut être
public class Sample {
private String postn;
private String movm;
public String getPostn() {
return postn;
}
public void setPostn(String postn) {
this.postn = postn;
}
public String getMovm() {
return movm;
}
public void setMovm(String movm) {
this.movm = movm;
}
}
et modifiez votre méthode pour inclure l'objet de cette classe et définissez les valeurs dans ces attributs. Modifiez le type de retour de la méthode en nom de classe, par exemple Échantillon
public Sample toString(int[] position, int xOffset, int yOffset) {
String postn = String.format("[%d,%d]", position[0], position[1]);
String movm = String.format("[%d,%d]", xOffset, yOffset);
Sample obj = new Sample();
obj.setPostn(postn);
obj.setMovm(movm);
return obj;
}
Modifiez la méthode pour renvoyer le tableau String et stockez les valeurs dans ce tableau:
public String[] toString(int[] position, int xOffset, int yOffset) {
String postn = String.format("[%d,%d]", position[0], position[1]);
String movm = String.format("[%d,%d]", xOffset, yOffset);
String arr[] = new String[2];
arr[0] = postn;
arr[1] = movm;
return arr;
}
Vous pouvez lire les détails sur le lien http://www.javatuples.org/
Vous pouvez utiliser un délimiteur si vous êtes sûr des données des variables. Mais cela nécessitera un crachement avec le délimiteur, lorsque vous souhaitez utiliser ces valeurs.
public String toString(int[] position, int xOffset, int yOffset) {
String postn = String.format("[%d,%d]", position[0], position[1]);
String movm = String.format("[%d,%d]", xOffset, yOffset);
return postn+"~"+movm;
}
Vous ne pouvez pas renvoyer deux valeurs différentes dans des méthodes en Java.
Lorsque ce besoin se produit, vous avez généralement deux options:
Une autre option serait d'utiliser un tableau de chaînes, car vos deux types de retour sont des chaînes. Vous pouvez utiliser cette option comme valeur de retour ou comme paramètre modifié par la méthode.
Edit: généralement les méthodes "toString" ne renvoient qu'une seule chaîne. Vous devriez peut-être envisager de concaténer vos deux chaînes en une seule chaîne à l'aide d'un séparateur. Exemple:
return postn + "_" + movm;
En Java, lorsque vous souhaitez qu'une fonction renvoie plusieurs valeurs, vous devez
- intégrer ces valeurs dans un objet que vous retournez
- ou modifiez un objet qui est passé à votre fonction ~ dystroy
Vous avez deux options (que je sache) ici:
public String[] toString(int[] position,int xOffset,int yOffset) {
String postn=String.format("[%d,%d]",position[0],position[1]);
String movm=String.format("[%d,%d]",xOffset,yOffset);
string [] myArray = new string[2];
myArray[0] = postn;
myArray[1] = movm;
return myarray; //returns as array
}
Modifié pour afficher la configuration
private String a;
private String b;
public void setPostN(String s)
{
a= s;
}
public String getPostN()
{
return a;
}
public void setMovm(String s)
{
a= s;
}
public String getMovm()
{
return a;
}
avec votre méthode:
public void toString(int[] position,int xOffset,int yOffset) {
String postn=String.format("[%d,%d]",position[0],position[1]);
String movm=String.format("[%d,%d]",xOffset,yOffset);
setPostN(postn);
setMovm(movm);
//no return, but available via calling getMovm() or getPostN()
}
vous pouvez soit créer un type wrapper, instancier et le renvoyer, soit renvoyer une carte ou une liste/un tableau.