2015-11-02 64 views
0

我正在處理我的Java類的代碼,我無法弄清楚如何創建接受int參數並根據該int更改顏色的方法。 問題明確要求我們:在Java中將顏色映射爲整數的方法

在代碼中,映射每種顏色一個整數(例如,在我的代碼3表示的綠色。)如果傳遞給方法的數量是無效的,改變顏色爲紅色。有效顏色爲「紅色」,「黃色」,「綠色」,「藍色」,「品紅色」和「黑色」。

換句話說,我試圖用一個整數來選擇一個字符串的顏色。我會如何去做這件事?

我曾嘗試:

公共無效changeColor(INT newColor) {

switch(color) { 
    case 1: 
    // color1 
    case 2: 
    // color2 
    case 3: 
    // color3 
    default: 
    //defaultcolor 
} 
draw(); 

}

我收到一個編譯器錯誤說;

不兼容的類型:INT不能轉換爲java.lang.String

我道歉,如果我不輸入正確的密碼。我對編程非常陌生。

+1

有很多方法可以做到這一點。爲了簡單起見,我建議閱讀['switch'](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html)聲明。 – saadq

+1

我不會使用開關。只需要一個帶有顏色的字符串數組,讓用戶的輸入成爲顏色的索引。當然,你必須考慮到人類通常使用1作爲「第一」號碼。 – ChiefTwoPencils

+0

我只推薦一個'switch',因爲這個問題的結構(根據數字選擇一種顏色,如果數字無效,則使用*默認*顏色)。 – saadq

回答

1

您可以在顏色使用開關:

void selectColor(int color) { 
    switch(color) { 
    case 1: 
     // color1 
     break; 
    case 2: 
     // color2 
     break; 
    case 3: 
     // color3 
     break; 
    default: 
     //defaultcolor 
    } 
} 

但是它會更好定義枚舉,並將它傳遞給這個函數,而不是int值。

+0

我使用blueJ作爲我的IDE和代碼我得到編譯器錯誤,指出...不兼容的類型:int不能轉換爲java.lang.String – AlephZed

+0

你能分享給你那個錯誤的代碼行嗎? –

+0

在案例陳述中,你可能會做錯事。 – Irfan

0

幾件事情:

你不是應該使用newColorswitch? (只是使其基於您的片段。也不太清楚,如果你有其他的代碼之間。

而且,穿上你的casebreak,否則它會經過每個案件時適用

  public void changeColor(int newColor) { 

      switch(newColor) { 
       case 1: 
        // color1 
        break; 
       case 2: 
        // color2 
        break; 
       case 3: 
        // color3 
        break; 
       default: 
        //defaultcolor 
       } 
       draw(); 
     } 

最後,根據您的異常(INT無法轉換爲java.lang.String),它看起來像你想的int轉換爲String某處你的代碼。嘗試使用一個Integer,而不是原始int

Integer number; 
String numberInWords = Integer.toString(number); 

代替

int number; 

希望它能幫助。