繁体   English   中英

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

[英]How to: Convert user input as an interger to a String

//这是我的第一堂课。 用于设置构造函数和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,白色代表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类(您不应该这样做-出于如此简单的目的,没有理由包括该类的所有开销):

class Color {

  int value;
  String description;

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

  private setColor(int value) {
    switch (value) {
    case 1: 
      this.description = "Red";
      break;
    case 2:
      this.description = "Blue";
      break;
    //Etc...
    }
  }

  public setValue(int value) {
    this.value = value;
    description = setColor(value);
  }

  @Override
  public String toString() {
    return description;
  }
}

编辑:

对于您的确切用例:

您想从某个Scanner对象中提取一个数字,使用它实例化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语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM