方法不返回值

时间:2015-11-28 22:22:32

标签: 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"类型的结果。消息。

似乎无法弄清问题是什么。

我知道这是不好的做法,但我已被告知不要将值存储在本地变量中并在最后返回。

我在这里缺少什么?

4 个答案:

答案 0 :(得分:4)

如果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);           
}

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

答案 1 :(得分:1)

default添加switch 案例

case ...: 
    return ...
...
default:
    return 0; // return some default value in case no other case was executed

请注意,default案例必须返回整数,否则错误将持续存在。

答案 2 :(得分:1)

DELIMITER //
 CREATE PROCEDURE getUsers (IN myUsername varchar (32))
    BEGIN
        SELECT * FROM `users` WHERE username = myUsername;
    END //
 DELIMITER ;

}

我猜是因为你没有主要的回归状态。如果n没有正确初始化,则switch case可以绕过,但如果你将power定义为int power(),编译器需要返回值... 如果它返回0,你就会知道n没有初始化

答案 3 :(得分:0)

您必须添加默认大小写或在切换后返回(因为如果n不是2,3或4,Java没有返回的内容):

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;
    }                
}