使用StringTokenizer拆分字符串存入数组后打印全为null如何解决?
问题原因
- 你的判断是正确的,问题核心是你只完成了数组的初始化操作,没有将
StringTokenizer拆分得到的单词赋值到数组的对应索引位置 - Java里引用类型的数组在初始化后,没有手动赋值的元素默认值就是
null,你直接遍历打印未赋值的数组,得到的结果自然全是null
修正代码
你只需要在循环中先调用StringTokenizer的nextToken()方法,将拿到的单词赋值给数组对应位置,再打印即可:
private void receiveInput() { Scanner scanner = new Scanner(System.in); System.out.println("Please enter your command: "); String input = scanner.nextLine(); StringTokenizer st = new StringTokenizer(input, " "); int number = st.countTokens(); String tokenArray[] = new String[number]; for (int i = 0; i < tokenArray.length; i++) { // 新增赋值逻辑:取出当前拆分的token,存入数组对应索引 tokenArray[i] = st.nextToken(); System.out.println(tokenArray[i]); } }
补充说明
你提前通过st.countTokens()获取到了拆分后的总token数,数组长度和token数量完全一致,不会出现读取超出范围的NoSuchElementException异常,符合你的使用需求。
内容的提问来源于stack exchange,提问作者kev0
相关产品推荐
相关产品推荐

