在Java中将颜色映射为整数的方法

问题描述:

我正在处理我的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

您可以在颜色使用开关:

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

几件事情:

你不是应该使用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; 

希望它能帮助。