这是我的方法:
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"类型的结果。消息。
似乎无法弄清问题是什么。
我知道这是不好的做法,但我已被告知不要将值存储在本地变量中并在最后返回。
我在这里缺少什么?
答案 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;
}
}