0

このメソッドでは、文字列変数を作成し、それを別の変数に移動します。

    private void produceRainbow() {
       String color = "RED";
       produceArc(color);
    }

そこにはさらにコードがありますが、それは問題ではありません (基本的に、文字列を他の色に変更します)。

次にこの方法:

private void produceArc(String color) {
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(Color.color);
}

(変数 leftX、upperY、rightX、lowerY は無視します)

ここでは、色を文字列に設定します。だからこうなってほしいarc.setColor(Color.RED)

コンパイルすると、次のエラーが発生します。

Program.java:89: cannot find symbol
symbol  : variable color
location: class java.awt.Color
    arc.setColor(Color.color);

私がやりたいことをすることさえ可能ですか?もしそうなら、私は何を間違っていますか?

(興味がある場合は、アークごとに個別のメソッドを作成し (赤、青、緑など、すべて独自のメソッドがあります)、これは機能しますが、変数を受け取るメソッドを 1 つだけ使用できるかどうか疑問に思っていました。これにより、コードが大幅に短縮されます)

4

1 に答える 1

1

私が与えたコメントを詳しく説明します。

Color.RED をすぐに渡すか、Color.FromName(string name); を使用できます。

推奨される方法:

Color.RED を渡すには、メソッドは次のようになります。

private void produceRainbow() {
       Color color = Color.RED;
       produceArc(color);
    }

と:

private void produceArc(Color color) {
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(color);
}

方法 2

何らかの理由で FromName メソッドを使用する場合は、以下のように適用します。

private void produceRainbow() {
       String color = "Red";
       produceArc(color);
    }

と:

private void produceArc(String color) {
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(Color.FromName(color));
}

この最後の方法は C# でのみ機能し、Java には適していないことに注意してください。(Java と C# のどちらを使用しているかはわかりません)

于 2013-11-01T20:58:19.203 に答える