次のコードを正しく書く方法は?
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);
}
次のエラーが発生しました
movm cannot be returned.
Java 8を使用する場合、 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);
}
それ以外の場合は、単に配列を返します。
このシナリオを実装するために考えられる4つの方法があります。
あなたが返すことができるすべての属性を持つクラスを作成します
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;
}
}
メソッドを変更してこのクラスのオブジェクトを含め、これらの属性に値を設定します。メソッドの戻り値の型をクラス名に変更します。サンプル
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;
}
String配列を返すようにメソッドを変更し、その配列に値を保存します。
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;
}
リンクで詳細を読むことができます http://www.javatuples.org/
変数内のデータについて確信がある場合は、区切り文字を使用できます。ただし、これらの値を使用する場合は、区切り文字を1回試す必要があります。
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;
}
Javaのメソッドで2つの異なる値を返すことはできません。
この必要性が発生した場合、通常2つのオプションがあります。
別のオプションは、両方の戻り値の型が文字列であるため、文字列の配列を使用することです。このオプションを戻り値として使用することも、メソッドによって変更されるパラメーターとして使用することもできます。
編集:通常、「toString」メソッドは文字列を1つだけ返します。おそらく、セパレータを使用して両方の文字列を1つの文字列に連結することを検討する必要があります。例:
return postn + "_" + movm;
Javaでは、関数が複数の値を返すようにするには、
- 返されるオブジェクトにそれらの値を埋め込みます
- または、関数に渡されるオブジェクトを変更します〜 dystroy
ここには2つのオプション(私が知っている)があります。
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
}
get setを表示するように編集されました
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;
}
あなたの方法で:
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()
}
ラッパータイプを作成し、インスタンス化して返すか、MapまたはList/Arrayを返すことができます。