teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

スペルミス

2016/05/24 03:16

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -7,6 +7,6 @@
7
7
  Donut scale(double ratio){
8
8
  Circle newInner = new Circle(inner.r * ratio);
9
9
  Circle newOuter = new Circle(outer.r * ratio);
10
- return nre Donut(newInner, newOuter);
10
+ return new Donut(newInner, newOuter);
11
11
  }
12
12
  ```

1

メソッドイメージ

2016/05/24 03:16

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,12 @@
1
1
  数値型以外に*演算子は使えません。*演算子の片方がscaleメソッドが返すDonut型になっているため、コンパイルエラーになっています。
2
2
  おそらくやりたいことは、innerとouterのそれぞれの円の半径をratio倍した新しいDonutを返したいということですよね?
3
- であれば、thisが持つinnerとouterの半径をratio倍した新たなCircleを作り、それらをDonutコンストラクタに渡して生成したDonutインスタンスを返すようにしなければならないのでは?現状、仮にコンパイルが通ったとしても無限に再帰するメソッドになります。
3
+ であれば、thisが持つinnerとouterの半径をratio倍した新たなCircleを作り、それらをDonutコンストラクタに渡して生成したDonutインスタンスを返すようにしなければならないのでは?現状、仮にコンパイルが通ったとしても無限に再帰するメソッドになります。
4
+
5
+ Circleがどんなメンバを持っているかわからないのでイメージですが…
6
+ ```java
7
+ Donut scale(double ratio){
8
+ Circle newInner = new Circle(inner.r * ratio);
9
+ Circle newOuter = new Circle(outer.r * ratio);
10
+ return nre Donut(newInner, newOuter);
11
+ }
12
+ ```