在java中,如何在一个方法中包含一个return语句?

在java中,如何在一个方法中包含一个return语句?,java,methods,Java,Methods,我知道在一些简单的情况下如何在方法中有一个返回,但是当一个方法从另一个类返回一个对象时,我不知道如何给一个变量来存储返回值。具体代码如下: public Path findPath(Maze maze) { Path path = new Path(); MazePosition initialPos = new MazePosition(0, 0, null); Stack<MazePosition> posForExplore = new Stack<

我知道在一些简单的情况下如何在方法中有一个返回,但是当一个方法从另一个类返回一个对象时,我不知道如何给一个变量来存储返回值。具体代码如下:

public Path findPath(Maze maze) {
    Path path = new Path();
    MazePosition initialPos = new MazePosition(0, 0, null);
    Stack<MazePosition> posForExplore = new Stack<MazePosition>();
    MazePosition pos = initialPos;
    MazePosition next;

    posForExplore.push(pos);
    while (!posForExplore.empty()) {
        pos = posForExplore.pop();
        switch (maze.getPosStatus(pos)) {
        case GOAL:
            MazePosition p = pos;
            while (p!=null) {
                path.insertFirst(p.getCoords()[0], p.getCoords()[1]);
                p =p.getFrom();
            }
            return path;
        case VISITED:
            break;
        case OBSTACLE:
            break;
        case OPEN:
            maze.setPosStatus(pos, MazeStatus.VISITED);
            for (Movement mov: DIRS_TO_EXPLORE) {
                next = maze.getNeighbour(pos, mov);
                if (next!=null&&(maze.getPosStatus(next)==MazeStatus.OPEN||maze.getPosStatus(next)==MazeStatus.GOAL)) {
                    posForExplore.push(next);
                }
            }
            break;
        }
    }
    return null;
}
公共路径findPath(迷宫){
路径路径=新路径();
MazePosition initialPos=新MazePosition(0,0,null);
Stack posForExplore=新堆栈();
MazePosition pos=初始位置;
其次是迷宫;
posForExplore.push(pos);
而(!posForExplore.empty()){
pos=posForExplore.pop();
开关(maze.getPosStatus(位置)){
案例目标:
MazePosition p=pos;
while(p!=null){
insertFirst(p.getCoords()[0],p.getCoords()[1]);
p=p.getFrom();
}
返回路径;
个案访问:
打破
案例障碍:
打破
案件审理:
maze.setPosStatus(pos,MazeStatus.VISITED);
对于(移动动作:直接探索){
next=maze.getnexture(位置,移动);
if(next!=null&(maze.getPosStatus(next)==MazeStatus.OPEN | | maze.getPosStatus(next)==MazeStatus.GOAL)){
posForExplore.push(下一步);
}
}
打破
}
}
返回null;
}

我有一个返回路径和返回null,所以我怎么能只有一个return语句。非常感谢你

声明并初始化
路径
。在插入任何内容之前检查
null
,然后对其进行初始化(中断循环以触发返回)。在返回路径的末尾。像

public Path findPath(Maze maze) {
    Path path = null;
    MazePosition initialPos = new MazePosition(0, 0, null);
    Stack<MazePosition> posForExplore = new Stack<MazePosition>();
    MazePosition pos = initialPos;
    MazePosition next;

    posForExplore.push(pos);
    loop: while (!posForExplore.empty()) {
        pos = posForExplore.pop();
        switch (maze.getPosStatus(pos)) {
        case GOAL:
            MazePosition p = pos;
            while (p != null) {
                if (path == null) {
                    path = new Path();
                }
                path.insertFirst(p.getCoords()[0], p.getCoords()[1]);
                p = p.getFrom();
            }
            break loop;
        case VISITED:
            break;
        case OBSTACLE:
            break;
        case OPEN:
            maze.setPosStatus(pos, MazeStatus.VISITED);
            for (Movement mov : DIRS_TO_EXPLORE) {
                next = maze.getNeighbour(pos, mov);
                if (next != null && (maze.getPosStatus(next) == MazeStatus.OPEN
                        || maze.getPosStatus(next) == MazeStatus.GOAL)) {
                    posForExplore.push(next);
                }
            }
            break;
        }
    }
    return path;
}
公共路径findPath(迷宫){
路径=空;
MazePosition initialPos=新MazePosition(0,0,null);
Stack posForExplore=新堆栈();
MazePosition pos=初始位置;
其次是迷宫;
posForExplore.push(pos);
循环:while(!posForExplore.empty()){
pos=posForExplore.pop();
开关(maze.getPosStatus(位置)){
案例目标:
MazePosition p=pos;
while(p!=null){
if(路径==null){
路径=新路径();
}
insertFirst(p.getCoords()[0],p.getCoords()[1]);
p=p.getFrom();
}
断环;
个案访问:
打破
案例障碍:
打破
案件审理:
maze.setPosStatus(pos,MazeStatus.VISITED);
对于(移动动作:直接探索){
next=maze.getnexture(位置,移动);
if(next!=null&(maze.getPosStatus(next)==MazeStatus.OPEN
||maze.getPosStatus(下一步)=MazeStatus.GOAL){
posForExplore.push(下一步);
}
}
打破
}
}
返回路径;
}

声明并初始化
路径
。在插入任何内容之前检查
null
,然后对其进行初始化(中断循环以触发返回)。在返回路径的末尾。像

public Path findPath(Maze maze) {
    Path path = null;
    MazePosition initialPos = new MazePosition(0, 0, null);
    Stack<MazePosition> posForExplore = new Stack<MazePosition>();
    MazePosition pos = initialPos;
    MazePosition next;

    posForExplore.push(pos);
    loop: while (!posForExplore.empty()) {
        pos = posForExplore.pop();
        switch (maze.getPosStatus(pos)) {
        case GOAL:
            MazePosition p = pos;
            while (p != null) {
                if (path == null) {
                    path = new Path();
                }
                path.insertFirst(p.getCoords()[0], p.getCoords()[1]);
                p = p.getFrom();
            }
            break loop;
        case VISITED:
            break;
        case OBSTACLE:
            break;
        case OPEN:
            maze.setPosStatus(pos, MazeStatus.VISITED);
            for (Movement mov : DIRS_TO_EXPLORE) {
                next = maze.getNeighbour(pos, mov);
                if (next != null && (maze.getPosStatus(next) == MazeStatus.OPEN
                        || maze.getPosStatus(next) == MazeStatus.GOAL)) {
                    posForExplore.push(next);
                }
            }
            break;
        }
    }
    return path;
}
公共路径findPath(迷宫){
路径=空;
MazePosition initialPos=新MazePosition(0,0,null);
Stack posForExplore=新堆栈();
MazePosition pos=初始位置;
其次是迷宫;
posForExplore.push(pos);
循环:while(!posForExplore.empty()){
pos=posForExplore.pop();
开关(maze.getPosStatus(位置)){
案例目标:
MazePosition p=pos;
while(p!=null){
if(路径==null){
路径=新路径();
}
insertFirst(p.getCoords()[0],p.getCoords()[1]);
p=p.getFrom();
}
断环;
个案访问:
打破
案例障碍:
打破
案件审理:
maze.setPosStatus(pos,MazeStatus.VISITED);
对于(移动动作:直接探索){
next=maze.getnexture(位置,移动);
if(next!=null&(maze.getPosStatus(next)==MazeStatus.OPEN
||maze.getPosStatus(下一步)=MazeStatus.GOAL){
posForExplore.push(下一步);
}
}
打破
}
}
返回路径;
}

以下是您必须采取的步骤

  • 尝试在开始时将新的
    路径
    实例初始化为null
    您的方法,例如
    pathReturn
  • 在每个
    开关
    语句中,在执行
    中断
    之前,分配
    路径返回
    更改为您的结果,然后
    break
  • 在方法末尾,只需返回
    pathReturn
    ,而不是
    null

    • 以下是您必须采取的步骤

      • 尝试在开始时将新的
        路径
        实例初始化为null
        您的方法,例如
        pathReturn
      • 在每个
        开关
        语句中,在执行
        中断
        之前,分配
        路径返回
        更改为您的结果,然后
        break
      • 在方法末尾,只需返回
        pathReturn
        ,而不是
        null

      消除
      返回路径,并且在末尾只有一个
      return
      语句,您需要能够从
      返回路径所在的循环中退出
      为,您需要指定返回值不应为
      null

      Path returnPath = null;
      LOOP: while (!posForExplore.empty()) {
          ...
          switch (maze.getPosStatus(pos)) {
              case GOAL:
                  ...
                  returnPath = path;
                  break LOOP;
              ...
          }
      }
      return returnPath;
      

      消除
      返回路径,并且在末尾只有一个
      return
      语句,您需要能够从
      返回路径所在的循环中退出
      为,您需要指定返回值不应为
      null

      Path returnPath = null;
      LOOP: while (!posForExplore.empty()) {
          ...
          switch (maze.getPosStatus(pos)) {
              case GOAL:
                  ...
                  returnPath = path;
                  break LOOP;
              ...
          }
      }
      return returnPath;
      

      不清楚你想要什么。请详细说明……请多告诉我们一点。什么嘘