我正在尝试创建一个简单的程序,您可以通过键入命令在四个方向上移动一个空格。这是我的代码:
public class Map {
public int x;
public int y;
}
和
import java.util.Scanner;
public class Mover {
Scanner input = new Scanner(System.in);
Map map = new Map();
public int move(int x, int y){
map.x = x;
map.y = y;
String direction = input.next();
System.out.println("Where will you move?");
if(direction.equalsIgnoreCase("move right")){
x++;
return x;
}
if(direction.equalsIgnoreCase("move left")){
x--;
return x;
}
if(direction.equalsIgnoreCase("move up")){
y++;
return y;
}
if(direction.equalsIgnoreCase("move down")){
y--;
return y;
}
}
public static void main(String args[]){
Mover mover = new Mover();
}
}
编译器说问题是我需要返回一个int值,但显然我已经在我所做的每个if语句中。具体来说,它表示在方法的最后返回一个'y'值将解决问题。尝试这个之后,错误消失了。但是在编译时,程序会立即终止。我做错了什么?
答案 0 :(得分:1)
所有return
语句都在条件块中。在最后添加一个return语句(对于direction
与任何内容不匹配的情况)。
return 0
?
答案 1 :(得分:1)
如果您的所有条件都是错误的,那么您的方法的执行将到达方法的末尾而不会发出return
语句。您必须为该情况提供返回值。
添加最后一行来磨练方法的主体:
return 0; // for example
Java方法没有“默认”返回值。
答案 2 :(得分:0)
因为如果您的所有if案例都失败了,那么您没有返回值。
你应该返回一些错误代码整数,有一个默认方向,或者抛出某种异常/错误。
public int move(int x, int y) throws InvalidDirectionException
{
...
// if all if cases fail:
throw new InvalidDirectionException("Invalid direction inputted");
}
答案 3 :(得分:0)
如果你的if语句都没有评估为true,那么你最终不会返回任何内容。如果没有ifs为真,则在末尾添加else以返回int
答案 4 :(得分:0)
move
方法必须始终返回值。在您的代码中,您需要更新代码以在没有满足条件的情况下编写一些int值。