如何正确编写以下代码?
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.
答案 0 :(得分:29)
使用 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);
}
否则只返回一个数组。
答案 1 :(得分:4)
您无法在Java中的方法中返回两个不同的值。
当出现这种情况时,通常有两种选择:
另一种选择是使用字符串数组,因为两种返回类型都是字符串。您可以将此选项用作返回值,或者由方法更改的参数。
编辑:通常“toString”方法只返回一个字符串。也许您应该考虑使用某个分隔符将两个字符串连接成一个字符串。例如:
return postn + "_" + movm;
答案 2 :(得分: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/
上阅读详细信息如果您确定变量中的数据,则可以使用某些分隔符。但是,当您想要使用这些值时,这将需要使用分隔符进行一次spiting。
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;
}
答案 3 :(得分:2)
在Java中,当您希望函数返回多个值时,您必须
- 将这些值嵌入到您返回的对象中
- 或更改传递给您的函数的对象 〜dystroy
这里有两个选项(我知道):
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
}
编辑显示设置
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()
}
答案 4 :(得分:1)
你可以创建一个包装器类型,实例化并返回它,或者返回一个Map或List / Array。