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
@jdevIllegalArgumentException
作为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;
}
}