为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 StringTokenizer 获取所有令牌元素

无法使用 StringTokenizer 获取所有令牌元素

呼啦一阵风 2021-08-04 17:15:56
我正在尝试使用 StringTokenizer 将字符串拆分为 "," 但无法获取整个值,令牌计数显示 3 但仅打印两个元素,如果我尝试使用其他两个输入“Ravi,Tuti,786”,则在下面添加了我的代码 " - 相同的输出 "Ravi,Tuti,786,pincode" 得到三个令牌而不是最后一个public class Tokenizer{public static void main(String[] args){String str = "Ravi,Tuti,786";//survival of fittest,journey to get job,update skill,try,get job";        StringTokenizer stk = new StringTokenizer(str,",");        System.out.println(stk.countTokens());        for(int i=0;i<=stk.countTokens();i++){        System.out.println(stk.nextToken());}}}输出是3RaviTuti
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

使用hasMoreTokens()有nextToken:


public class Tokenizer{

    public static void main(String[] args){

    String str = "Ravi,Tuti,786";//survival of fittest,journey to get job,update skill,try,get job";

     StringTokenizer stk = new StringTokenizer(str,",");

     System.out.println(stk.countTokens());


     while (stk.hasMoreTokens()) {

        System.out.println(stk.nextToken());

     }


   }

}

您的方法的问题在于您正在循环中运行countTokens,在调用for后nextToken会发生变化。


如果要使用for循环,则需要将令牌计数保存到变量中:


int numTokens = stk.countTokens();

for (int i = 0; i < numTokens; i++) {

  System.out.println(stk.nextToken());

}


查看完整回答
反对 回复 2021-08-04
?
呼如林

TA贡献1798条经验 获得超3个赞

你应该使用hasTokens()方法。


for( ; stk.hasMoreTokens() ; ) {

    System.out.println(stk.nextToken());

}


查看完整回答
反对 回复 2021-08-04
  • 3 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信