Java 无法使用StringTokenizer获取所有令牌元素
我正在尝试通过“,”拆分字符串,使用StringTokenizer,但无法获得整个值,token count显示为3,但仅打印两个元素,我在下面添加了代码 如果我尝试了其他两个输入 “拉维,图蒂,786”-输出相同 “Ravi,Tuti,786,pincode”获得三个代币而不是最后一个Java 无法使用StringTokenizer获取所有令牌元素,java,Java,我正在尝试通过“,”拆分字符串,使用StringTokenizer,但无法获得整个值,token count显示为3,但仅打印两个元素,我在下面添加了代码 如果我尝试了其他两个输入 “拉维,图蒂,786”-输出相同 “Ravi,Tuti,786,pincode”获得三个代币而不是最后一个 public class Tokenizer{ public static void main(String[] args){ String str = "Ravi,Tuti,786";//survival o
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());}
}
}
将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());
}
}
}
您的方法的问题是,您正在
for
循环中运行countTokens
,调用nextToken
后会发生变化
如果要对循环使用,则需要将令牌计数保存到变量中:
int numTokens = stk.countTokens();
for (int i = 0; i < numTokens; i++) {
System.out.println(stk.nextToken());
}
int numTokens=stk.countTokens();
for(int i=0;i
您应该使用hasTokens()
方法
for( ; stk.hasMoreTokens() ; ) {
System.out.println(stk.nextToken());
}
countTokens()
方法返回:
使用当前分隔符集的字符串中剩余的令牌数
因此,在if
循环中,它会不断计算并返回较小的数字。要防止出现这种情况,可以将其解析为变量
int length = stk.countTokens();
for(int i=0;i<length;i++){
System.out.println(stk.nextToken());
}
输出:
3
Ravi
Tuti
786
您好,是的,它工作正常,但您能告诉我我在循环中做错了什么,直到它得到三个正确的令牌…?查看我关于将令牌计数保存到变量的更新答案。感谢您的时间,让我了解新事物snr bro
for(int i=stk.countTokens();i>0;i--){
System.out.println(stk.nextToken());
}
3
Ravi
Tuti
786