问题描述
public enum AgeRange {
YOUNG(10,15),ADULT(20,50);
private final int value;
private AgeRange (int value) {
this.value = value
}
public int getValue() {
return value;
}
}
如何要求用户输入一个整数值而不是一个字符串(使用 java.util.Scanner)并通过 main 函数中的 system.out.println 返回结果
解决方法
首先,您的枚举无法编译。您的构造函数采用一个参数,但您使用两个参数调用它。把它改成这样:
public enum AgeRange {
YOUNG(10,15),ADULT(20,50);
private final int from;
private final int to;
private AgeRange (int from,int to) {
this.from = from;
this.to = to;
}
public int getFrom() {
return from;
}
public int getTo() {
return from;
}
}
- 现在,询问您的用户的年龄。
- 循环遍历 AgeRange.values()
- 对于每个范围,将年龄与 range.getFrom() 和 range.getTo() 进行比较
- 找到正确的范围后,返回它
- 请注意,年龄可能不在您提供的范围组中。那你打算怎么办?
使用两个参数和一个方法创建一个构造函数,该方法接受一个字符串并在定义时显示范围的边界:
public enum AgeRange {
YOUNG(10,50);
private final int from;
private final int to;
private AgeRange (int from,int to) {
this.from = from;
this.to = to;
}
public int getFrom() {
return from;
}
public int getTo() {
return to;
}
public static void displayRangeBoundaries(String str) {
for (AgeRange range : AgeRange.values()) {
if (str.toUpperCase().equals(range.toString())) {
System.out.println(range.toString() + " is between " +
range.getFrom() + " and " + range.getTo() +
" years old."
);
return;
}
}
System.out.println("No range found for: " + str);
}
}
并像这样使用它:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter a range term");
String input = scan.nextLine();
AgeRange.displayRangeBoundaries(input);
}