2014-12-20 3 views
-1

Вот мой код:StringTokenizer countTokens() возвращает 1 с любой строкой

StringTokenizer line = new StringTokenizer("{([]{()})({})}"); 
System.out.println("Count: " + line.countTokens()); 

Выход всегда Count: 1

Я знаю, что это не он происходит с таким простым кодом. Может быть что-то не так с библиотекой StringTokenizer?

Пожалуйста, помогите!

+0

Почему это не должно произойти? –

+0

Это может помочь устранить ваше непонимание StringTokenizer, если вы объясните, почему вы считаете, что Count: 1 «не должно происходить». – laune

ответ

1

Набор разделителей по умолчанию для StringTokenizer содержит только пробельные символы, которых нет в вашей строке.

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html#StringTokenizer%28java.lang.String%29

Также обратите внимание на следующее высказывание JavaDoc из StringTokenizer:.

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

+0

Не знал про простую вещь. Я думал, что это тоже пробелы. Благодарю. –

-2

Чтобы распечатать следующий токен, используйте System.out.println (line.nextToken());