【问题标题】:How to enter constants as an input in Java如何在 Java 中输入常量作为输入
【发布时间】:2016-07-19 19:49:14
【问题描述】:

我一直在使用 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 将定义的常量理解为用户输入的方法。

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

【问题讨论】:

  • 不,你必须自己动手。
  • 快速建议:在命名常量时使用ALL CAPITAL 字母以区分它们与变量
  • 你可以编译它并调用toString,但这似乎比字符串比较更迂回。
  • 谢谢@SotiriosDelimanolis。
  • @avr。已采纳建议。谢谢。

标签: java integer constants


【解决方案1】:

除非在您的代码中明确说明了值(因此您提到的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

不过,边界情况如此之多,在任何可以想象的情况下这都不值得:-)

【讨论】:

  • 如果你想测试它,我已经更新了代码以实际编译^^
猜你喜欢
  • 2015-02-17
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多