2017-11-16 13 views
0

を使用してのIntの制限を超えている場合、どのようにチェックします:ユーザ入力がこれは私がこれまでに入れたものである公共の静的な無効メイン(文字列の引数[])

public class CheckNum { 

    public static void main (String args[]) { 
     for (int i = 0; i < args.length; i++) { 
      if (Integer.parseInt(args[i]) > Integer.MAX_VALUE) { 
       System.out.println("Input value is too big"); 
      } 

     } 
    } 

} 

しかし、私は中に入れないときこのような整数の最大値を超えるLinuxのザッツの数字:

JavaのCHECKNUM 1234567890

私も整数に大きすぎる数値を変換できないことから、私は推測しているのparseIntでNumberFormatsエラーが、ある取得Integerの最大値と比較する前にString args []の入力だけを使用して、入力された数値が整数には大きすぎるかどうかを調べる別の方法はありますか?

+3

のマニュアルを参照してくださいBigIntegerの を操作する方法の詳細を取得したい場合は、BigInteger bi = new BigInteger(args[0]);

を使用する - キャッチ(NumberFormatExceptionがの)'? 'args'は' String [] 'なので、解析する値をチェックするのはあなた次第です。これは、それがcmdから来たという事実とは関係ありません。あなたは 'String s =" 1234567890 ";を使用して解析することができ、それは同じです。 – AxelH

+0

それは働いた!ありがとうございました! – okbuthow

+0

あなたwoudn't。チェックが 'public static void main(String [] args)'か他の場所にあるかどうかは全く関係ありません。 – EJP

答えて

0

単にあなたはそれが間違って入力インデックスを出力します

public static void main (String args[]) { 
    for (int i = 0; i < args.length; i++) { 
     try{ 
      Integer.parseInt(args[i]); 
     catch(NumberFormatException e){ 
      //e.printStackTrace(); 
      System.out.format("Input %d is incorrect : %s%n", i, args[i]); 
     } 

    } 
} 

を取得し、例外をキャッチします。

0

例外を使用して、ユーザーが誤った値を入力したことを検証できます。問題が何であるかを知ることは、多くのことから引き起こされる可能性があるため、少し難しくなります。最も簡単な(そして最良の解決策は)それが好きにするために、次のようになります。

try { 
    int result=Integer.parseInt(args[i]); 
} catch (NumberFormatException e){ 
    System.out.println("Input value is not an integer [-2147483648 : 2147483647 ]"); 
} 

あなたは追加のチェックを行う必要があり、問題を知ることに主張する場合。しかし、あなたは文字列としてarg [0]を使い、何らかの文字列操作を行う必要があります。例えば、それを長くキャストしようとすると、長いものよりも大きくなるかもしれません。あるいは、文字や、@#$ @ $ ^!@ T!@ $ ^のようなものを含んでいるかもしれません。したがって、数値だけが含まれているかどうかをチェックする必要があります。浮動小数点値かどうかを確認し、たとえばBigIntegerにキャストしてみてください。しかし、すべてのこれらのテストは、彼らはまだ同じ問題につながるので無意味である - 間違った入力:)

1

あなたが示唆したよう@AxelHで例外をキャッチするか、提案

下に試すことができますどちらかあなたはロングへの入力を唱えてもよいし、値がIntegerの最大値よりも大きいかどうかを確認します。

public static void main(String[] args) { 
     Long l = Long.parseLong(args[0]); 
     if(l > Integer.MAX_VALUE){ 
      System.out.println("Value can't be handled by Integer"); 
     } else{ 
      System.out.println("Proper Integer"); 
     } 

    } 

入力をLongに解析できない場合でも、NumberFormatExceptionが表示されることがあります。

そして、入力が大きく行くことができる場合は、 `てみたBigInteger here

関連する問題