

大学の課題で、以下のような問題が出題されました。

> 情報隠蔽を行うために メソッドpublic void setColor(java.awt.Color c)を追加した TurtleTrap4
> クラスを作成せよ．  
>  さらに，mainメソッドで TurtleTrap4 クラスのオブジェクトを作成して，
> setColorメソッドを呼び出してペンの色を変えるように変更せよ．

そこで、私は以下のようにプログラムしましたが、エラーが出力されてしまいました。

[code]

    public class TurtleTrap4 {
        Turtle t;
        int x, y;
        int dx, dy;
    
        public void init(int xpos, int ypos, int xspeed, int yspeed) {
        this.x = xpos;
        this.y = ypos;
        this.dx = xspeed;
        this.dy = yspeed;
        this.t = new Turtle();
        this.t.move(xpos, ypos);
        this.t.penDown();
        }
    
        public void setColor(java.awt.Color c)
    
        public void step() {
        if (this.x < 20 || 340 < this.x)
            this.dx = -this.dx;
        if (this.y < 20 || 340 < this.y)
            this.dy = -this.dy;
        
        this.x += this.dx;
        this.y += this.dy;
        this.t.move(this.x, this.y);
        }
    
        public static void main(String[] args) {
        TurtleTrap4 trapA = new TurtleTrap4();
        trapA.init(100, 200, 10, 5);
    
        TurtleTrap4 trapB = new TurtleTrap4();
        trapB.init(150, 250, -10, 3);
        setColor(RED);
    
    
    
        while (true) {
            trapA.step();
            trapB.step();
        }
        }
    }
    
[/code]

エラーメッセージ

[code]

    TurtleTrap4.java:17: エラー: ';'がありません
        public void setColor(java.awt.Color c)
                                              ^
    エラー1個
    
[/code]

これはどういう意味なのでしょうか。

私は、javaを先週から授業で始めたばかりの初心者で、文法など理解していない点は多々あると思いますが、どこを修正するべきか教えていただけるととても助かります。  
(主に、 public void setColor(java.awt.Color
c)をどのようにプログラムすればいいかをヒントでもいいので、教えていただけるととても助かります。）

よろしくお願いします。


CC BY-SA 4.0
2021-06-15T14:21:12.983
77585
2021-06-19T12:01:20.613
2021-06-15T16:29:23.720
3060
46879
question
java
javaの情報隠蔽プログラム


質問文中のコードにはメソッドのボディが無いためコンパイルエラーになっています。

メソッドの宣言にはメソッドのボディ([8.4. Method
Declarations](https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.4))が必要で、メソッドのボディとは、セミコロン(`;`)かコードブロック(`{}`)のこと([8.4.7.
Method
Body](https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-
MethodBody))です。

* * *

`setColor`メソッドはこのクラスで実装する想定だと思いますので、(セミコロンでなく)コードブロックを追記します。

つまり、次のような形になります:

[code]

        public static void setColor(java.awt.Color c) {
            // ここにメソッドが呼ばれたときの処理を実装する
        }
    
[/code]


CC BY-SA 4.0
2021-06-19T12:01:20.613
77653
2021-06-19T12:01:20.613
2808
77585
answer