Сначала вы используете ()
в качестве разделителей, затем переключаетесь на ,
, но вы переключаетесь перед извлечением первого токена (текст в скобках).
Что вы, вероятно, намеревались сделать, это:
transitionInput = data.nextLine();
st = new StringTokenizer(transitionInput,"()", false);
if (st.hasMoreTokens())
{
String chunk = st.nextToken();
st = new StringTokenizer(chunk, ",");
while (st.hasMoreTokens())
{
transition.add(st.nextToken());
}
}
В этом коде предполагается, что выражение всегда начинается и заканчивается скобками. Если это так, вы можете также удалить их вручную, используя String.substring()
. Кроме того, вы можете рассмотреть возможность использования String.split()
для фактического разделения:
String transitionInput = data.nextLine();
transitionInput = transitionInput.substring(1, transitionInput.length() - 1);
for (String s : transitionInput.split(","))
transition.add(s);
Обратите внимание, что в обоих примерах предполагается, что в качестве разделителей используются запятые, как в вашем примере кода (хотя в тексте вашего вопроса сказано иное)