Adi*_*tya 2 java integer constants
我一直在用Java编程,我Integer.MAX_VALUE在计算中使用常量来解决编程问题.
我想知道是否有一种方法可以让Java解释Integer.MAX_VALUE或Integer.MIN_VALUE(系统定义的常量)在用户输入时不进行明显的字符串比较.
目前我使用的常量为:
int MAXIMUMINTEGER = Integer.MAX_VALUE;
int MINIMUMINTEGER = Integer.MIN_VALUE;
Run Code Online (Sandbox Code Playgroud)
我想用它们如下:
System.out.println("Enter a number : ");
int number = in.nextInt();
System.out.println("The number entered is : " + number);
Run Code Online (Sandbox Code Playgroud)
在输出控制台中:
Enter a number: Integer.MAX_INT
The number entered is : 2147483647
Run Code Online (Sandbox Code Playgroud)
我正在寻找使java理解定义的常量作为用户输入的方法.
对此有任何帮助表示赞赏.
除非在您的代码中明确说明了值(因此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);
Run Code Online (Sandbox Code Playgroud)
这将获得您输入的预期结果(前提是您通过Integer.MAX_VALUE而不是Integer.MAX_INT,因为后者不是常量值).
我想你可以Integer.valueOf()先使用它来转换为正常运行的代码,然后解析String该值是否无效.
不过,有这么多的边境案例,这在任何可以想象的场景中都不值得:-)