Java 方法不返回值

Java 方法不返回值,java,switch-statement,return,return-type,Java,Switch Statement,Return,Return Type,以下是我的方法: public int power(int x, int n) { switch (n) { case 2: return square(x); case 3: return cube(x); case 4: return hypercube(x); } } 编译器正在显示以下消息: 方法断点:Tester[entry]-power(int,int)-此方法必须返回int“messa

以下是我的方法:

public int power(int x, int n) {    
    switch (n) {
        case 2: return square(x);
        case 3: return cube(x);
        case 4: return hypercube(x);
    }            
}
编译器正在显示以下消息:

方法断点:Tester[entry]-power(int,int)-此方法必须返回int“message”类型的结果

我似乎不知道问题出在哪里


我知道这是一种不好的做法,但我被指示不要将值存储在局部变量中,并在最后返回它


我在这里遗漏了什么?

默认值
案例添加到您的
开关

case ...: 
    return ...
...
default:
    return 0; // return some default value in case no other case was executed
请注意,
默认值
案例必须返回一个整数,否则错误将持续存在

public int power(int x,int n){

switch (n) {
case 2:  return square(x);

case 3:  return cube(x);

case 4:  return hypercube(x);

}
return 0;            
}

我猜这是因为您没有主返回状态。如果n未正确初始化,则开关大小写可以忽略,但如果您将power定义为int power(),则编译器需要返回值。。。
如果它返回0,您将知道n没有很好地初始化

如果
n
不是您的一个实例,则不会返回任何内容-这就是编译器所抱怨的

由于您的实现只满足n为2、3和4的情况,因此最合适的做法是抛出一个异常:

public int power(int x, int n) {
    switch (n) {
        case 2: return square(x);
        case 3: return cube(x);
        case 4: return hypercube(x);
    }
    throw new IllegalArgumentException("Power must be 2, 3 or 4. Unsupported power: " + n);           
}

然后,编译器将满足于所有代码路径要么返回某些内容,要么抛出异常。

必须添加默认大小写,要么在开关后返回(因为Java没有在n不是2、3或4时重新运行的内容):


如果n!=2、3或4,您认为会发生什么情况?您的程序将不会返回除2、3或4以外的任何对象的
n
。“我知道这是一种不好的做法,但我被指示不要将值存储在局部变量中,并在最后返回它。“-你知道什么是坏习惯吗?我在这里看到的唯一一个错误是编译器错误突出显示的错误。可能您应该有一个
default
案例,该案例会引发一个
IllegalArgumentException
。我尝试使用默认案例,但仍然保留相同的消息。如果您的
default
案例通过返回或引发异常来终止该方法,则不会发生这种情况。不幸的是,您没有向我们显示包含
default
案例的代码……您忘记了“throws”语句+一是思想;我从来不知道抛出异常可以替代
return
@jdev
IllegalArgumentException
作为
RuntimeException
不需要声明为抛出异常,通常在实践中也不会声明。
public int power(int x,int n){

    switch (n) {
    case 2:  return square(x);

    case 3:  return cube(x);

    case 4:  return hypercube(x);

    }            
    return 0;
}
public int power(int x,int n){

    switch (n) {
    case 2:  return square(x);

    case 3:  return cube(x);

    case 4:  return hypercube(x);

    default: return 0;
    }                
}