- ベストアンサー
オブジェクトを定義してからの計算が出来ない
- オブジェクトを定義してからの計算ができないエラーが発生します。
- mathクラスのaddメソッドで互換性のない型のエラーが発生します。
- 解決方法がわからず、詳しい方に助けを求めています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
クラス、コンストラクタ、メソッドがパッケージプライベートで、 クラスレベル変数がパブリックになっているのは、非常に不自然です。 何かの誤解があるのだと思われます。 そこで、クラス、コンストラクタ、メソッドをパブリックにして、 クラスレベル変数をプライベートにして、パブリックなsetter/getterで アクセスするように作り直してみました。 --- Math2.java --- public class Math2{ private int ma; private int mb; public Math2(){ setMa( 0 ); setMb( 0 ); } public Math2(int ma){ setMa( ma ); setMb( 0 ); } public Math2(int ma, int mb){ setMa( ma ); setMb( mb ); } public int getMa(){ return ma; } public void setMa(int ma){ this.ma = ma; } public int getMb(){ return mb; } public void setMb(int mb){ this.mb = mb; } public int add(int num){ return ma+num + mb*num; } } そして、これを以下のメインクラスから実行してみてください。 所望の結果が得られるのではないかと思います。 --- Math2Main.java --- public class Math2Main{ public static void main(String[] args) { Math2 math2 = new Math( 3, 4 ); int ans = math2.add( 5 ); System.out.println( ans ); } } プログラミングの入力には、Eclipse等の統合開発環境を入手して 使用されることをお勧めします。 高性能な入力アシスタント機能がありますので、初歩的なレベルの 間違いは、的確な修正候補も表示してくれるでしょう。
その他の回答 (2)
- PED02744
- ベストアンサー率40% (157/390)
>maとmbの合計値を入力した値を出力として出したい それだけですか? それなら、new omath 自体の必要性がわからなくなります。 int add(int num){ math omath=new math(); omath.ma=this.ma+num; omath.mb=this.mb*num; omath=omath.ma+omath.mb; return omath; } これは int add(int num){ return (this.ma+num+this.mb*num); } これだけではないですか?
お礼
回答ありがとうございます。 無理やりオブジェクトを定義しようとしていたのが間違いだったんですね。 参考書を見ながら見よう見真似で作ったのでおかしなことになって混乱してしまいました。 返事が送れて申し訳ありませんが、本当に助かりました。 ありがとうございました。
- PED02744
- ベストアンサー率40% (157/390)
結論として、どういう値をomathに入れたいのですか? というか、そもそも omathというのは、mathという形をした入れ物なので、 maやmbという値をそれぞれの変数に入れることはできますが、 入れ物そのものであるomathに値を設定できないということです。 (容器に水を入れることはできるが水を容器にはできないという事) 何がしたいのか、頭の整理ができてないように思われます。
お礼
回答ありがとうございます。 やりたいこととしましては、maとmbの合計値を入力した値を出力として出したいと考えてます。 オブジェクト生成後に変数を加えるというのは不可能ということは分かりましたが、実際にどのような構文をくめばうまくいくのかがいまいちまだ分かってない状態です。
お礼
回答ありがとうございます。 おっしゃられた通りにやってみると通りました。 まだ細かい部分では理解できていないところも多いですが、 今後学習していけば分かると思います。 丁寧な説明ありがとうございました。