【问题标题】:Creating a switch statement to convert Color class data types to String type创建 switch 语句以将 Color 类数据类型转换为 String 类型
【发布时间】:2020-09-14 03:29:33
【问题描述】:

我目前正在尝试创建一个 switch 语句,在使用 getColor() 时,将颜色键入为字符串会将 Color.red(或其他)的 Primative 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

【问题讨论】:

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

标签: java methods colors constructor switch-statement


【解决方案1】:

差不多了。看起来问题出在你的方法上。为什么不把public Color getColor(Color color){的参数改成public Color getColor(String color){呢?

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

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

而不是这个:

return color = java.awt.Color.red;

试试这个:

return java.awt.Color.red;

最后,您似乎有一些不必要的break; 语句。如果你要返回一个值,那么就不需要休息,对吧?

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

也许您可以从您的代码中使用defaultColor() 方法? (如前所述,带有适当的 return 语句)

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 2019-04-12
    • 1970-01-01
    • 2015-07-06
    • 2016-07-28
    • 2016-03-20
    • 2016-05-20
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多