在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
- 以下是您必须采取的步骤
返回路径方法中间的code>,并且在末尾只有一个return
语句,您需要能够从返回路径所在的循环中退出
为,您需要指定返回值不应为null
Path returnPath = null;
LOOP: while (!posForExplore.empty()) {
...
switch (maze.getPosStatus(pos)) {
case GOAL:
...
returnPath = path;
break LOOP;
...
}
}
return returnPath;
消除返回路径方法中间的code>,并且在末尾只有一个return
语句,您需要能够从返回路径所在的循环中退出
为,您需要指定返回值不应为null
Path returnPath = null;
LOOP: while (!posForExplore.empty()) {
...
switch (maze.getPosStatus(pos)) {
case GOAL:
...
returnPath = path;
break LOOP;
...
}
}
return returnPath;
不清楚你想要什么。请详细说明……请多告诉我们一点。什么嘘