我一直在用Java编程,我在计算中使用常量Integer.MAX_VALUE
来解决编程问题。
我想知道当用户输入作为输入而没有进行明显的字符串比较时,Java是否有办法解释Integer.MAX_VALUE
或Integer.MIN_VALUE
(系统定义的常量)。
目前我使用的常量为:
int MAXIMUMINTEGER = Integer.MAX_VALUE;
int MINIMUMINTEGER = Integer.MIN_VALUE;
我想按如下方式使用它们:
System.out.println("Enter a number : ");
int number = in.nextInt();
System.out.println("The number entered is : " + number);
在输出控制台中:
Enter a number: Integer.MAX_INT
The number entered is : 2147483647
我正在研究如何让java将定义的常量理解为用户输入。
对此有任何帮助表示赞赏。
答案 0 :(得分:5)
除非在您的代码中明确说明这些值,否则这是不可能的(所以您提到的String
比较)。
然而,可能存在使用反射机制的核心解决方案,其基本上是对类及其字段的元访问。但是,您需要将输入解析为字段名称,如下所示:
System.out.println("Enter a number : ");
String input = in.nextString();
Class klass = Class.forName("java.lang." + input.split("\\.")[0]);
Field field = klass.getField(input.split("\\.")[1]);
int number = field.getInt(klass);
System.out.println("The number entered is : " + number);
这会得到您输入的预期结果(前提是您通过了Integer.MAX_VALUE
而不是Integer.MAX_INT
,因为后者不是常量值。)
我猜您可以首先使用Integer.valueOf()
将其转换为正常运行的代码,然后在值无效时解析String
。
尽管如此,有很多边境案例在任何可以想象的场景中都不值得: - )