Java 如何:将用户输入作为整数转换为字符串

Java 如何:将用户输入作为整数转换为字符串,java,class,Java,Class,//这是我的第一节课。用于设置构造函数和mutator方法 public int setColor(int setColor) //Mutator { colorCode = setColor; return setColor; } public String setColorOfAuto(String toString) { if (colorCode == 1); { toString = ("Red"); return toString; } } 我

//这是我的第一节课。用于设置构造函数和mutator方法

public int setColor(int setColor) //Mutator
{
  colorCode = setColor;
  return setColor;
}

public String setColorOfAuto(String toString)
{
  if (colorCode == 1);
  {
    toString = ("Red");
    return toString;
  }
}
我的问题是。如何获取用户输入,作为一个整数,(1,2,3,4)转换为字符串(1表示红色,2表示蓝色,3表示白色,4表示黑色)。 这些对象已经声明并初始化,但由于编程负担过重,我选择不添加该部分。此外,这使它看起来更干净,希望更容易浏览。仅限于使用mutator和accessor方法


谢谢。

您可以使用枚举在整数和字符串之间进行映射,如下所示

public enum Color {
        RED(1), BLACK(2), WHITE(3);
        private int value;

        private Color(int value) {
            this.value = value;
        }
    }

    public static void main(String[] args) {
        for (Color col : Color.values()) {
            System.out.println("Color Value: " + col.value + " - Color Name: " + col);
        }
    }

这就是枚举的用途。枚举是集合中所有项的完整有序列表

因此,在您的示例中,您可以将
Color
定义为枚举类型:

enum Color {
  RED(1),
  BLUE(2),
  WHITE(3),
  BLACK(4);
}
如果您要打印一个被实例化为红色的
Color
实例,它将如下所示:
red

如果您想让他们说些其他的话,您甚至可以为每一项都定制一个描述:

enum Color {
  RED(1),
  BLUE(2),
  WHITE(3),
  BLACK(4);

  private final String description;

  Color(int value) {
    switch(value) {
      case 1: 
        description = "The color of blood.";
        break;
      case 2:
        description = "As blue as the ocean.";
        break;
      //etc...
    }
  }

  @Override
  public String toString() {
    return description;
  }
}
如果您坚持使用
Color
类(您不应该这样做——没有理由为了这么简单的目的而包含类的所有开销):

编辑:

对于您的确切用例:

您想从某个
扫描器
对象中提取一个数字,用它来实例化一个颜色类或枚举,然后获取值

出于本例的目的,我将假设您拥有我上面的
Color
类。您必须在该类中完成switch语句才能使其工作

//Within main
Scanner stdin = new Scanner(System.in);
// Print user prompts
// ...
int colorSelection = stdin.nextInt();

Color c = new Color(colorSelection);

// Print the color
System.out.println(c);

如果您想在
ALL-CAPS
中打印颜色,您可以使用上面相同的代码,但使用我在回答中列出的第一个枚举,而不是
color
类。如果需要自定义描述符,请使用第二个枚举并完成
switch
语句

如果这还不够,我将添加程序的其余部分,希望能让这更清楚。是否要将字符串颜色指定给该类的属性?是。在我的另一个使用这些类的程序中,它有一个色码扫描器。如果他们输入1,我想将该输入转换为字符串setColorOfAuto(1=“red”),这有意义吗?因为他们只有4,开关有什么问题?你是什么意思?我的实际程序包含2、3、4的所有if语句以及任何超出范围的语句。为了帮助我,我只是想把它简化一下。嗯,如果我找不到人来帮助我使用Mutator和Accessor方法,那么我会尝试在我的编码中实现这一点。谢谢你抽出时间!但正如我所说的,我现在被限制在更基本的编程方式上。这是一个想法,你可以在枚举中定义映射,就像你读取一个整数的构造函数一样,然后检查枚举,从中提取字符串,就像在示例中一样,这是一种实现它的方法。我明白你的观点,我喜欢这个概念。但是,问题是。我必须有一个扫描仪,用于输入1,2,3,4。(色码)。然后,它将这些值返回到字符串。比如输入你的汽车是什么颜色。用户输入:1好的,您选择了红色。对。你仍然可以使用扫描仪。从扫描仪获取用户输入,然后将其传递到颜色枚举或使用它初始化颜色类。您可以通过打印枚举或打印类对象来获得所需的字符串值。对不起。我对java相当陌生。你能给我举一个小例子,说明你所说的将其传递到颜色枚举中是什么意思吗?
//Within main
Scanner stdin = new Scanner(System.in);
// Print user prompts
// ...
int colorSelection = stdin.nextInt();

Color c = new Color(colorSelection);

// Print the color
System.out.println(c);