2017-02-27 15 views
4

私はこのログを私のログに残していますが、私の知る限りシナリオは不可能です。NumberFormatExceptionが有効な番号にある

java.lang.NumberFormatException: For input string: "1487832810" 
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.7.0_80] 
     at java.lang.Long.parseLong(Long.java:430) ~[na:1.7.0_80] 
     at java.lang.Long.parseLong(Long.java:483) ~[na:1.7.0_80] 

here is(と思う)(STに行番号が一致する)、関連するソースコード

424: char firstChar = s.charAt(0); 
425: if (firstChar < '0') { // Possible leading "+" or "-" 
426:  if (firstChar == '-') { 
427:   negative = true; 
428:   limit = Long.MIN_VALUE; 
429:  } else if (firstChar != '+') 
430:   throw NumberFormatException.forInputString(s); 

したがって、最初の文字(1)が< '0'であると考え?

私はそれが何らかの文字エンコーディングの問題か何かしか想定できません。

アイデア?

+3

おそらく、 '1'の前に非印字文字がありますか? 'Long.parseLong'と呼ぶ番号の長さを記録できますか? –

+2

メソッドの別の部分があるので、 "1 <'0'"ではありません。たぶん隠されたキャラクターです。 – Maroun

+1

エラーを表示中に文字列の前後に引用符が来るのはなぜですか?文字列が "\" 1487832810 \ ""である可能性がありますか?ただ尋ねる。文字列の長さを表示し、私たちに知らせてください。 – gRaWEty

答えて

2

文字列に印刷できない文字があると思います。印刷できない文字はすべて< '0'です。あなたは出力に例外を発生されている文字を見ることができない理由であること

http://web.itu.edu.tr/sgunduz/courses/mikroisl/ascii.html

:あなたは、印刷可能であり、どれがされていないものをここで見ることができます。

これらのケースで例外をスローしたくない場合は、ifステートメントまたは正規表現でこれらの文字をチェックするなど、より正確な比較が必要です。とにかく、これらの文字を置き換えるためにSOでいくつかの質問があり、これらのように:

Fastest way to strip all non-printable characters from a Java String

How can I replace non-printable Unicode characters in Java?

+1

OPの出力は 'tail'でした - 私は' vi'を経由して完全なSTを取得しました。数字の前に '^ @'が一杯に見えました!正解。今私はこれらの文字がどこから来ているかを調べなければならない!どうも。 – pstanton

関連する問題