• ベストアンサー

BMI

プログラムについての質問です 以下のプログラム(java)の星の部分で BMI.java:9: シンボルを見つけられません。 シンボル: メソッド toString(double) 場所 : java.lang.Integer の クラス String msg=Integer.toString(num2/(num1*num1)); ^ エラー 1 個 というエラーがでます まだjavaを勉強しだしたばっかりなんですが、参考書を見てもさっぱりわかりません どなたかわかりやすく解説していただけませんか? 内容は身長と体重を入力するとBMIを計算するプログラムです。 import javax.swing.*; public class BMI{ public void run(){ String text1=JOptionPane.showInputDialog("Height:"); double num1=Integer.parseInt(text1); String text2=JOptionPane.showInputDialog("Weight:"); double num2=Integer.parseInt(text2); ★String msg=Integer.toString(num2/(num1*num1)); JOptionPane.showMessageDialog(null,msg); } public static void main(String[] args){ BMI bmi = new BMI(); bmi.run(); } }  よろしくおねがいします

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

> double num1=Integer.parseDouble(text1); > double num2=Integer.parseDouble(text2); > に変えたのですがこの後がわかりません… これでは コンパイルは通らないでしょう double num1= Double.parseDouble(text1); double num2= Double.parseDouble(text2); にします 計算結果を受ける変数を準備して、これのtoStringメソッドを使いましょう double res = num2 / ( num1 * num1 ); String msg = res.toString(); といった具合です 直接やるなら String msg = ((Double)(num2 / (num1 * num1))).toString(); といったようにキャストしてやるとか (num2 / (num1 * num1)) の結果をDouble型にする記述が (Double)(num2 / (num1 * num1))となります ... 1) Double型のオブジェクトのtoStringを使うため 1)の全体を()で括ります ((Double)(num2 / (num1 * num1))).toString(); つまり 先の例のresが((Double)(num2 / (num1 * num1)))の部分にあたります

346mouse
質問者

お礼

解決しました!! 丁寧な回答ありがとうございました。

その他の回答 (2)

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

> BMI.java:9: シンボルを見つけられません。 > シンボル: メソッド toString(double) > 場所 : java.lang.Integer の クラス > String msg=Integer.toString(num2/(num1*num1)); > ^ > エラー 1 個 IntegerクラスのtoString()メソッドに、doubleを引数とするものがないので、 出ているエラーだと思われます。 計算結果をStringにしたいだけなら、 // ★String msg=Integer.toString(num2/(num1*num1)); String msg = "" + num2 / (num1 * num1); で十分だと思います。

346mouse
質問者

お礼

回答ありがとうございました。

346mouse
質問者

補足

>計算結果をStringにしたいだけなら 計算結果をdoubleにしたい場合はどうすればいいですか? double num1=Integer.parseInt(text1); double num2=Integer.parseInt(text2); を double num1=Integer.parseDouble(text1); double num2=Integer.parseDouble(text2); に変えたのですがこの後がわかりません…

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そのまま... だよなぁ. double の値を変換するのに, なぜ Integer を使ったんだろう.

関連するQ&A