2016-07-19 30 views
2

我一直在使用Java進行編程,並且在計算中我使用常量Integer.MAX_VALUE來解決編程問題。如何在Java中輸入常量作爲輸入

我想知道是否有一種方法可以讓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將定義的常量理解爲用戶輸入。

對此的任何幫助表示讚賞。

+11

不,你必須推出自己的。 –

+0

快速建議:使用'全部大寫'字母,同時命名常量__variables__ __differentiate__! – avr

+1

你可以編譯它並調用toString,但這看起來比做字符串比較更迂迴。 –

回答

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如果該值是無效的。

不過,有這麼多的邊境情況下,這決不會是值得的,在任何可以想象的場景:-)

+0

我已更新代碼以實際編譯,如果您想測試它^^ – Kelevandos

相關問題