2016-07-19 15 views
2

私はJavaでプログラミングしていましたが、プログラミング上の問題を解決するための計算で定数Integer.MAX_VALUEを使用していました。Javaの入力として定数を入力する方法

わかりやすい文字列の比較をせずに、ユーザーが入力したときにJavaがInteger.MAX_VALUEまたはInteger.MIN_VALUE(システム定義の定数)を解釈する方法があるかどうかは疑問でした。私が探しています

Enter a number: Integer.MAX_INT 
The number entered is : 2147483647 

:出力コンソールで

System.out.println("Enter a number : "); 
int number = in.nextInt(); 
System.out.println("The number entered is : " + number); 

を次のように私はそれらを使用したい

int MAXIMUMINTEGER = Integer.MAX_VALUE; 
int MINIMUMINTEGER = Integer.MIN_VALUE; 

現在、私はとして定数を使用していますJavaが定義した定数をユーザー入力として理解できるようにします。

これについての助けに感謝します。

+11

:-)任意の想像のシナリオでそれだけの価値はないだろうということがあります。 –

+0

クイック提案:定数を命名する際に 'ALL CAPITAL'文字を使用して、__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

関連する問題