いずれの条件も満たされない場合(つまり、の場合x == y
)はどうなりますか?メソッドは何を返しますか?したがって、デフォルト値を返す必要があります。
public int Bol(int x, int y){
if(x > y){
return (x / y);
}else if(x < y){
return (y / x);
}
return 0; // or whatever default value you need
}
単一を使用することも役立ちますreturn
:
public int Bol(int x, int y){
int result = 0; //whatever default value you want
if(x > y) {
result = (x / y);
} else if(x < y) {
result = (y / x);
}
return result;
}
「elseをelseに変更すると、この問題は解決することを知っています。しかし、else-ifを使用すると、なぜこのエラーが発生したのでしょうか?」
まず、ブランチがどのように機能するかを理解することは、正しく機能するコードを作成するために必要なコア知識であるため、、、およびの動作を確認するif
ことelse
をお勧めします。else if
使用時に機能しない理由は、ブロックのブール式がtrueと評価された場合にのみ、ブロックelse if
内のコードが実行されるためです。したがって、Javaコンパイラは、ブロックが実行されない場合があることを認識します(したがって、ブロックもブロックも実行されません)。つまり、どのステートメントも実行されない場合があります。これは、メソッドが常に。を返すというメソッドのシグネチャに違反します。これで、をに変更したときにコードが機能するようになりました。これは、前の(またはs)ブロックが実行されていない場合、 an内のコードが常に実行されるためです。else if
else if
if
else if
return
int
else if
else
else
if
else if