
[英]How to use scanner hasNext() to loop through a line of keyboard text and validate the user input of interger and string
[英]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.