使用StringTokenizer分割字符串仅能获取第一个token如何解决
问题原因
你使用的Scanner.next()方法默认以空白字符作为分隔符,每次调用仅返回第一个空白符之前的内容。你输入带空格的整句Hi welcome to java时,text = s.next()只拿到了第一个单词Hi,后续内容没有被存入变量,所以StringTokenizer分割时自然只能得到1个token。
修复方案
将s.next()替换为s.nextLine()即可,该方法会读取完整一行输入,直到遇到换行符停止,可以拿到你输入的整段带空格的字符串。
修复后代码
Scanner s = new Scanner(System.in); System.out.println("ENTER STRING:"); text = s.nextLine(); StringTokenizer str = new StringTokenizer(text," "); System.out.println(str.countTokens()); while(str.hasMoreTokens()) { System.out.println(str.nextToken()); }
效果验证
修改后再次输入Hi welcome to java,会输出token总数为4,后续依次打印Hi、welcome、to、java四个单词,符合预期。
内容的提问来源于stack exchange,提问作者Ahleya Sheikh
相关产品推荐
相关产品推荐

