• 受付
  • 困ってます

return文について質問

  • 質問No.9685560
  • 閲覧数78
  • ありがとう数0
  • 気になる数0
  • 回答数2

お礼率 0% (0/2)

BMIの指数と判定結果を出力したいのですが、「return文が指定されていません」と出てきます。
一番最後の「肥満(4度)」の下の行にreturn d;と挿入すると、ArrayIndexIutIfBoundsExceptionと出てきてしまいました。
何が間違っているのか教えていただければ幸いです。


public class Ex41{
public static void main(String[] args){
double[][] data={ {50,176},{60,170},{70,160},{90,170},{120,175},{120,170} } ;
for(int i=0;i<=data.length;i++){
double k=data[i][0];
double c=data[i][1];
}
}
static double bmi(double k,double c){
double d=k/(c/100)/(c/100);
return d;
}
static double bmicheck (double d){
if(d<18.5) System.out.println("低体重"+d);
else if(d>=18.5 && d<25) System.out.println("普通体重"+d);
else if(d>=25 && d<30) System.out.println("肥満(1度)"+d);
else if (d>=30 && d<35) System.out.println("肥満(2度)"+d);
else if (d>=35 && d<40) System.out.println("肥満(3度)"+d);
else System.out.println("肥満(4度)"+d);
}
}

回答 (全2件)

  • 回答No.2

ベストアンサー率 72% (4425/6124)

他カテゴリのカテゴリマスター
>「return文が指定されていません」と出てきます。

これは、

>static double bmicheck (double d){

「double値を返す関数bmicheck」という宣言であるのに、返り値を持つreturn文が無いので、エラーとなっています。

>一番最後の「肥満(4度)」の下の行にreturn d;と挿入すると、

確かにそれは解決法の一つですが、本質的には bmicheck() 関数はprintlnで結果を表示して完了し、返り値に意味はないのですから、

》static void bmicheck (double d){

と修正するのが良いように思います。(これならreturn文は無くて構いません)

----

そして、

>一番最後の「肥満(4度)」の下の行にreturn d;と挿入すると、
>ArrayIndexIutIfBoundsExceptionと出てきてしまいました。

こちらの件は、return文の挿入により一応まともに動くようになったものの、

>for(int i=0;i<=data.length;i++){

ここのループ判定により、定義配列外(data[6][0])にアクセスしようとしてしまったが故のエラーです。
配列要素6個のインデックス値は、0~5までしかありません。
だから、

》for(int i=0;i<data.length;i++){

このように修正すればよいでしょう。
  • 回答No.1

ベストアンサー率 50% (1357/2675)

[技術者向] コンピューター カテゴリマスター
static double bmicheck (double d){
こいつが、返すdoubleはどこへ?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ