Lo primero es saber que estas usando la clase Scanner, podías haber empezado por ahí
, entonces mirando el API te das cuenta que el metodo useDelimiter no recibe un String cualquiera como StringTokenizer, si no que recibe una expresion regular y por eso " | " lo trata como "un espacio en blanco o un espacio en blanco".
Podria funcionar quizá algo así:
useDelimiter("\\s*\|\\s*");