Dos cosas:
1º StringTokenizer es una clase un tanto antigua (que no por eso mala) pero te recomiendo probar cosas como Scanner que son sustancialmente más potentes al tener la modalidad de partir por patrones y demás.
2º Si inicializas el StringTokenizer con StringTokenizer(String str, String delim)
no hace falta que llames a nextToken(String delim); porque ya te lo parte por el delimitador del principio.
Y con esto, y sabiendo que no te he solucionado el problema

copio del api:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
y tienen mucha razón, con un split lo habrías echo en menos lineas y más claro.
Un saludo!