9

Integer.parseInt("-1000");出力として -1000 を返します。

Integer.parseInt("+500");例外をスローします。

記号を切り捨てずに、前に「+」記号が付いた正の数を認識するにはどうすればよいですか?

4

6 に答える 6

9

DecimalFormatパターンのようにしてみてください"+#;-#"。明示的な署名付き解析を処理します。パターンの内訳:

  • 最初の部分 ( の前) は正のパターンで、文字;で始まる必要があります+
  • -2 番目の部分は否定で、文字で始まる必要があります

例:

DecimalFormat df = new DecimalFormat("+#;-#");
System.out.println(df.parse("+500"));
System.out.println(df.parse("-500"));

出力:

500
-500
于 2012-05-21T13:17:07.240 に答える
7

1つのオプションは、Java 7を使用することです...それが文書化されているように動作すると仮定します:

文字列引数を符号付き 10 進整数として解析します。文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') または ASCII プラス記号 '+' ('\u002B') にすることができます。正の値を示します。

ただし、これは Java 7 に導入された新機能のようです。JDK 6ドキュメントは、それが処理されることのみを示しています-

于 2012-05-21T13:13:04.170 に答える
5

メソッドは、ドキュメントに記載されているとおりに動作しています。

文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') にすることができます。

+解析を正しく行うには、最初の文字をスキップする必要があります。

if (s.charAt(0) == '+') s = s.substring(1);
int val= Integer.parseInt(s);
于 2012-05-21T13:13:35.363 に答える
1

Java 7 を使用していますInteger.parseInt("+500");が、例外はスローされません。

文字列内の文字はすべて 10 進数でなければなりません。ただし、最初の文字は、負の値を示す ASCII マイナス記号'-'( '\u002D') または正の値を示す ASCII プラス記号'+'( '\u002B') にすることができます。

Integer.parseInt(String) の Java 7 ドキュメント

于 2012-05-21T13:15:35.057 に答える
0

実装は Java 6 から 7 に変更されました。Java 6 まで Intger.parseInt("+500") は Exception に使用されていましたが、Java 7 では完全に正常に動作します。

于 2016-02-19T16:07:39.617 に答える
0

public static int parseInt(String s) は NumberFormatException をスローします

文字列引数を符号付き 10 進整数として解析します。文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') にすることができます。結果の整数値が返されます。これは、引数と基数 10 が parseInt(java.lang.String, int) メソッドの引数として指定された場合とまったく同じです。

Javadoc

于 2012-05-21T13:14:57.790 に答える