首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从while循环返回2个布尔值?Java

如何从while循环返回2个布尔值?Java
EN

Stack Overflow用户
提问于 2015-05-10 04:15:13
回答 6查看 4.4K关注 0票数 1

我尝试同时返回correctPiece和correctDest,但是

代码语言:javascript
复制
return correctPiece;

带下划线,并出现错误"Unreachable code“。

我怎么才能同时返回两个呢?

代码语言:javascript
复制
   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;
        }
EN

回答 6

Stack Overflow用户

发布于 2015-05-10 04:16:45

通过将您的return类型更改为boolean[]并使用类似于

代码语言:javascript
复制
return new boolean[] { correctDest, correctPiece };
票数 5
EN

Stack Overflow用户

发布于 2015-05-10 04:21:43

您可以创建一个包含要返回的两个布尔值的类,然后创建一个该类的对象并返回该对象。

这种方法更好的原因是,如果你想在将来扩展响应,添加更多的参数,如果你有一个返回的对象,总是更容易做到这一点。

在这种情况下,您的代码将如下所示

代码语言:javascript
复制
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);
    }

您可以创建一个响应类来捕获这两个值,如

代码语言:javascript
复制
private static class Response {

    boolean correctDest;
    boolean correctPiece;
    public Response(boolean correctDest, boolean correctPiece) {
        super();
        this.correctDest = correctDest;
        this.correctPiece = correctPiece;
    }


}
票数 4
EN

Stack Overflow用户

发布于 2015-05-10 04:21:39

您可以将返回类型更改为boolean[],这样就可以返回2个布尔值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30144551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档