нулевой символ токенизатора - PullRequest
0 голосов
/ 28 сентября 2011
inputValue = "111,GOOG,20,475.0"

StringTokenizer tempToken = new StringTokenizer(inputValue, ",");

while(tempToken.hasMoreTokens() == true)
{
    test = token.nextToken();
    counterTest++;
}

Это дает мне неправильный правильный NULL-символ

Я начал изучать stringtokenizer, и я не уверен, что в этом нет логической ошибки, я думаю, что это работает, но я кое-что забыл

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Я вижу опечатку в вашем коде.Однако использование StringTokenizer не рекомендуется в новом коде.Из javadocs:

StringTokenizer - это устаревший класс, который сохраняется из соображений совместимости, хотя его использование не рекомендуется в новом коде.Рекомендуется всем, кто ищет эту функцию, использовать метод split String или пакет java.util.regex.

Рекомендуется использовать String # split .Что-то вроде:

private void customSplit(String source) {
    String[] tokens = source.split(";");
    for (int i = 0; i < tokens; i++) {
        System.out.println("Token" + i + "is: " + token[i]);
    }
}
2 голосов
/ 28 сентября 2011

Ваш фрагмент кода работает с некоторыми незначительными изменениями, возможно, вы упустили что-то простое , так что проверьте переписанный полный пример ниже:

public static void main(String[] args) throws Exception {

    String inputValue = "111,GOOG,20,475.0";

    StringTokenizer tempToken = new StringTokenizer(inputValue, ",");

    int counterTest = 0;
    while (tempToken.hasMoreTokens()) {
        String test = tempToken.nextToken();
        System.out.println(test);

        counterTest++;
    }

    System.out.println("-------------------");
    System.out.println("counterTest = " + counterTest);
}

Выход:

111
GOOG
20
475.0
-------------------
counterTest = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...