質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
インスタレーション

パソコンや周辺機器について、即時利用する事が出来るよう、あらかじめ初期設定を行うことをインスタレーションと呼びます。

Q&A

解決済

2回答

853閲覧

.

退会済みユーザー

退会済みユーザー

総合スコア0

インスタレーション

パソコンや周辺機器について、即時利用する事が出来るよう、あらかじめ初期設定を行うことをインスタレーションと呼びます。

0グッド

0クリップ

投稿2016/05/24 01:48

編集2016/05/31 07:43

.............................................. .

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/05/24 03:17

Circleクラスを実装されているのでしたら、Circleクラスもあわせて記載していただくと、より明快な回答がつくかもしれません。
guest

回答2

0

コンパイルエラーが発生しているため、コードを実行できない、と出力されています。

詳細は

java

1return this.outer.getArea() * this.scale(ratio) - this.inner.getArea() * this.scale(ratio);

の箇所で、this.outer.getArea()はdouble型なので計算可能ですが、this.scale(ratio)はDonut型を返しますので、計算できません。

計算しようとしていた値はthis.scale(ratio)で間違いないでしょうか。

投稿2016/05/24 03:55

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

数値型以外に*演算子は使えません。*演算子の片方がscaleメソッドが返すDonut型になっているため、コンパイルエラーになっています。
おそらくやりたいことは、innerとouterのそれぞれの円の半径をratio倍した新しいDonutを返したいということですよね?
であれば、thisが持つinnerとouterの半径をratio倍した新たなCircleを作り、それらをDonutコンストラクタに渡して生成したDonutインスタンスを返すようにしなければならないのでは?現状、仮にコンパイルが通ったとしても無限に再帰するメソッドになります。

Circleがどんなメンバを持っているかわからないのでイメージですが…

java

1Donut scale(double ratio){ 2 Circle newInner = new Circle(inner.r * ratio); 3 Circle newOuter = new Circle(outer.r * ratio); 4 return new Donut(newInner, newOuter); 5}

投稿2016/05/24 01:56

編集2016/05/24 03:16
swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2016/05/24 04:05 編集

コンパイルエラーではなく、実行時例外じゃないですか? ちょっと気になったもので^^;
swordone

2016/05/24 02:11

Uncompilable source codeとありますが?
ozwk

2016/05/24 04:05 編集

コンパイルエラーですね コンパイルエラーなのでnetbeansが実行時例外を吐いているのでは?
kaputaros

2016/05/24 04:05

そうですか、失礼しました。^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問