我尝试同时返回correctPiece和correctDest,但是
return correctPiece;带下划线,并出现错误"Unreachable code“。
我怎么才能同时返回两个呢?
while(correctPiece && !correctDest) {
System.out.println("Click on a destination");
toXCo = s.getToXInt();
toYCo = s.getToYInt();
Move found = null;
for( Move m : moves){
//checks if move can be done
if (m.ToX() == toXCo && m.ToY() == toYCo){
//if move is allowed- exit loop
found = m;
correctDest = true;
}
}
if (found == null) {
//if move can't be, ask for new co-ordinates
System.out.println("This move is not legal \n");
correctDest = false;
correctPiece = false;
}
return correctDest;
return correctPiece;
}发布于 2015-05-10 04:16:45
通过将您的return类型更改为boolean[]并使用类似于
return new boolean[] { correctDest, correctPiece };发布于 2015-05-10 04:21:43
您可以创建一个包含要返回的两个布尔值的类,然后创建一个该类的对象并返回该对象。
这种方法更好的原因是,如果你想在将来扩展响应,添加更多的参数,如果你有一个返回的对象,总是更容易做到这一点。
在这种情况下,您的代码将如下所示
while(correctPiece && !correctDest) {
System.out.println("Click on a destination");
toXCo = s.getToXInt();
toYCo = s.getToYInt();
Move found = null;
for( Move m : moves){
//checks if move can be done
if (m.ToX() == toXCo && m.ToY() == toYCo){
//if move is allowed- exit loop
found = m;
correctDest = true;
}
}
if (found == null) {
//if move can't be, ask for new co-ordinates
System.out.println("This move is not legal \n");
correctDest = false;
correctPiece = false;
}
return new Response(correctDest, correctPiece);
}您可以创建一个响应类来捕获这两个值,如
private static class Response {
boolean correctDest;
boolean correctPiece;
public Response(boolean correctDest, boolean correctPiece) {
super();
this.correctDest = correctDest;
this.correctPiece = correctPiece;
}
}发布于 2015-05-10 04:21:39
您可以将返回类型更改为boolean[],这样就可以返回2个布尔值。
https://stackoverflow.com/questions/30144551
复制相似问题