Integer.parseInt("-1000");
出力として -1000 を返します。
Integer.parseInt("+500");
例外をスローします。
記号を切り捨てずに、前に「+」記号が付いた正の数を認識するにはどうすればよいですか?
Integer.parseInt("-1000");
出力として -1000 を返します。
Integer.parseInt("+500");
例外をスローします。
記号を切り捨てずに、前に「+」記号が付いた正の数を認識するにはどうすればよいですか?
DecimalFormat
パターンのようにしてみてください"+#;-#"
。明示的な署名付き解析を処理します。パターンの内訳:
;
で始まる必要があります+
-
2 番目の部分は否定で、文字で始まる必要があります例:
DecimalFormat df = new DecimalFormat("+#;-#");
System.out.println(df.parse("+500"));
System.out.println(df.parse("-500"));
出力:
500
-500
1つのオプションは、Java 7を使用することです...それが文書化されているように動作すると仮定します:
文字列引数を符号付き 10 進整数として解析します。文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') または ASCII プラス記号 '+' ('\u002B') にすることができます。正の値を示します。
ただし、これは Java 7 に導入された新機能のようです。JDK 6ドキュメントは、それが処理されることのみを示しています-
。
メソッドは、ドキュメントに記載されているとおりに動作しています。
文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') にすることができます。
+
解析を正しく行うには、最初の文字をスキップする必要があります。
if (s.charAt(0) == '+') s = s.substring(1);
int val= Integer.parseInt(s);
Java 7 を使用していますInteger.parseInt("+500");
が、例外はスローされません。
文字列内の文字はすべて 10 進数でなければなりません。ただし、最初の文字は、負の値を示す ASCII マイナス記号
'-'
('\u002D'
) または正の値を示す ASCII プラス記号'+'
('\u002B'
) にすることができます。
実装は Java 6 から 7 に変更されました。Java 6 まで Intger.parseInt("+500") は Exception に使用されていましたが、Java 7 では完全に正常に動作します。
public static int parseInt(String s) は NumberFormatException をスローします
文字列引数を符号付き 10 進整数として解析します。文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') にすることができます。結果の整数値が返されます。これは、引数と基数 10 が parseInt(java.lang.String, int) メソッドの引数として指定された場合とまったく同じです。