2013-11-01 72 views
0

在此方法中,我創建一個字符串變量,並將其移動到另一個字符串變量。使用像這樣的變量:set.color(Color.variable)

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,洛厄)

這裏我要顏色設置爲一個字符串:

下一頁此方法。 所以我希望它成爲arc.setColor(Color.RED)

當我編譯,我得到這個錯誤:

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

它甚至有可能做我想做的事?如果是這樣,我做錯了什麼? (如果你很好奇,我爲每個弧(紅色,藍色,綠色等等,都有自己的方法)做了一個單獨的方法,這個工程,但我想知道如果我可以只使用一種方法需要一個變量,這使得代碼更短)

+3

你真的想傳遞一個字符串嗎?你可以馬上傳遞Color.RED。 或者如果你真的想使用一個字符串,你可以使用Color.FromName(string name); – James

+0

如果你真的想要使用一個字符串,你可以使用反射來獲得與該字符串匹配的名稱的靜態字段,或者構建一個將字符串映射到Color實例的映射。但是那些是醜陋和不安全的(就類型/編譯檢查而言)。我會用@詹姆斯的建議去。 – vanza

+0

@James那麼如果我不使用字符串,我該如何更改我的代碼? 在第一種方法中,我更改「produceArc(Color.RED);」 並在第二種方法中「 private void produceArc(Color.color){ ... arc.setColor(Color.color); 「 我在這裏得到的錯誤是」「 – Chronicle

回答

0

詳細說明我給的評論。

您可以立即傳遞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#)

相關問題