如何在Java中输入常量作为输入

时间:2016-07-19 19:49:15

标签: java integer constants

我一直在用Java编程,我在计算中使用常量Integer.MAX_VALUE来解决编程问题。

我想知道当用户输入作为输入而没有进行明显的字符串比较时,Java是否有办法解释Integer.MAX_VALUEInteger.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将定义的常量理解为用户输入。

对此有任何帮助表示赞赏。

1 个答案:

答案 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

尽管如此,有很多边境案例在任何可以想象的场景中都不值得: - )