”メソッドが値を返さない”というエラーで困っています。
次のようなプログラムでは、メソッドが値を返せないのは当たり前なのでしょうか??
public int A(){
int a= 3;
int b= 5;
if(条件式){
return (Math.sin(a*x));
}else if(条件式){
return (Math.cos(b*x));
}else if(条件式){
return 式 ;
}
}
「return」をif文のなかに入れてしまうことが,いけないのでしょうか?
また,それがしてはいけない事ならば,条件式によって扱うreturn文を変えるには,
どうしたら良いかアドバイスを下さい。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
例えば、次のようなメソッドは「メソッドが値を返さない」というエラーになります。
public int method(int value) {
if (value > 0) return 0;
}
もし if の条件(value > 0)が成り立たなかったとき、全く return が行われずにメソッドが終わってしまうからです。次のようなメソッドも、同じ理由で同じエラーになります。
public int method2(int value) {
if (value == 0) {
return 1;
} else if (value == 1) {
return 2;
}
}
次のメソッドでは、一見問題がないように思えますが、実はこれもエラーになります。
public int method3(int value) {
if (value >= 0) {
return 3;
} else if (value < 0) {
return 4;
}
}
二つの if がどちらも実行されなかった場合、return されずにメソッドが終わってしまうとコンパイラが判断するからです。
上のメソッドでは、実際には (value >= 0) と (value < 0) がどちらも成り立たないということはありえないので、事実上は必ずどちらかの return が実行されるはずではありますが、コンパイラはそこまで見てくれません。
言語の仕様で、「構文」だけを見てエラーかどうか判断する決まりになっているのです。
このメソッドでは、次のように修正すると、正しくコンパイルできます。
public int method3(int value) {
if (value >= 0) {
return 3;
} else {
return 4;
}
}
この構文では、必ず if と else のどちらかが実行される、と判断されるからです。
以上を参考にして、もう一度 if else の構文を見直してみてください。
詳しく解説して頂き,ありがとうございました。
あまりにも初歩的なミスで,恥ずかしく思います。
とても参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
JSPで<SELECT>の中にDBから持っ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
-
mainメソッドのthrows節で設定...
-
Excel VBA でExcelを終了したい...
-
onClickで関数呼出し後に、結果...
-
エクセルVBAにおけるON TIMEメ...
-
配列のメソッド
-
Refreshメソッドの使い方
-
DataGridViewでセルクリックイ...
-
シンボルを解決できません。 ...
-
ListViewにて行追加
-
AdapterView<?> parent この部...
-
worksheets & rows メソッドは...
-
サーブレット DBにある生年月...
-
ポストバック時のDatasourceバ...
-
ASP.NET MVCのホームページ表...
-
ダブルコロンの役割
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報