2011-01-23 12 views
1

StringTokenizer.nextTokenがnullを返すことはありますか? 私のコードでNullPointerExceptionをデバッグしようとしていますが、これまでに唯一の可能性は、nextToken()から返された文字列がnullを返すことでした。それは可能でしょうか? javaのドキュメントで何も見つかりませんでした。トークナイザの文字列内にこれ以上トークンが存在しない場合java StringTokenizer - nextTokenはnullを返すことができますか?

おかげ

+0

null文字列をコンストラクタに渡していませんか? countTokens()は何を返しますか? – Reno

+0

StringTokenzierのコンストラクタに?私はそうとは思わないので、コンストラクタ自体でNullPointerExceptionをスローします。これは私のケースではありません。 – duduamar

答えて

1

私はそれがNullPointerExceptionが投げることができると思います。 nextTokenのコードを()検査

、ここ

public String nextToken() { 
     /* 
     * If next position already computed in hasMoreElements() and 
     * delimiters have changed between the computation and this invocation, 
     * then use the computed value. 
     */ 

     currentPosition = (newPosition >= 0 && !delimsChanged) ? 
      newPosition : skipDelimiters(currentPosition); 

     /* Reset these anyway */ 
     delimsChanged = false; 
     newPosition = -1; 

     if (currentPosition >= maxPosition) 
      throw new NoSuchElementException(); 
     int start = currentPosition; 
     currentPosition = scanToken(currentPosition); 
     return str.substring(start, currentPosition); 
    } 

、メソッドskipDelimitersの呼び出しは()はNullPointerExceptionを投げることができます。

private int skipDelimiters(int startPos) { 
     if (delimiters == null) 
      throw new NullPointerException(); 

     int position = startPos; 
     while (!retDelims && position < maxPosition) { 
      if (!hasSurrogates) { 
       char c = str.charAt(position); 
       if ((c > maxDelimCodePoint) || (delimiters.indexOf(c) < 0)) 
        break; 
       position++; 
      } else { 
       int c = str.codePointAt(position); 
       if ((c > maxDelimCodePoint) || !isDelimiter(c)) { 
        break; 
       } 
       position += Character.charCount(c); 
      } 
     } 
     return position; 
    } 
+0

これは単なる可能性であり、あなたの場合の原因である必要はありません! – aNish

関連する問題