Java 创建switch语句以将颜色类数据类型转换为字符串类型

Java 创建switch语句以将颜色类数据类型转换为字符串类型,java,methods,colors,constructor,switch-statement,Java,Methods,Colors,Constructor,Switch Statement,我目前正在尝试创建一个switch语句,在使用getColor()时,以字符串形式键入颜色,将color.red(或其他)的Primative颜色类型设置为variable color。如果我甚至不能正确地提出这个问题,我会提前道歉。我4周前开始编程 public class ChooseAColor { private Color color //default color public Color defaultColor(){ this.color = Color.red publi

我目前正在尝试创建一个switch语句,在使用getColor()时,以字符串形式键入颜色,将color.red(或其他)的Primative颜色类型设置为variable color。如果我甚至不能正确地提出这个问题,我会提前道歉。我4周前开始编程

public class ChooseAColor {
private Color color

//default color
public Color defaultColor(){
this.color = Color.red


public Color getColor(Color color){
    switch (color){
        case "Red":
            return color = java.awt.Color.red;
            break;
        case "Black":
            return java.awt.Color.black;
            break;
        case "Blue":
            return color = java.awt.Color.blue;
        default:
            break;
        }

    }
}
然后试着打电话和打印

public class TestChooseAColor{
ChooseAColor myColor = new ChooseAColor();

System.out.println("My favorite color is: " + myColor.getColor("Red")
我期待的是

My favorite color is red
然而,我越来越

java: incompatible types: java.awt.Color cannot be converted to int

差不多了。看来问题出在你的方法上。为什么不将参数从
public-Color-getColor(Color-Color){
更改为
public-Color-getColor(String-Color){

毕竟,在打印消息中,您给方法的是字符串,而不是颜色。因此,如果您想给它一个字符串,那么您的方法参数应该接受字符串是有意义的

另外,您可能想对这些返回语句做些什么。为什么在返回时要设置颜色?为什么不直接返回

与此相反:

return color = java.awt.Color.red;
试试这个:

return java.awt.Color.red;
最后,看起来您有一些不必要的
break;
语句。如果您返回一个值,那么就不需要中断,对吗

但是不要忘记,您确实需要返回一个值,所以看起来默认值需要一些东西,而不是中断


也许您可以从代码中使用
defaultColor()
方法(使用正确的返回语句,如前所述)

您不能在类上使用switch语句(在本例中为
Color
)。这就是它给出错误的原因…它可能试图将
Color
转换为
int
。您只能在int、char、String*、enum上使用switch语句。。。