勤奋学习java,有个关于StringTokenizer的问题
登录 | 论坛导航 -> 华新鲜事 -> 求学狮城 | 本帖共有 7 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 11:59:05  楼主  关注此帖
勤奋学习java,有个关于StringTokenizer的问题
import java.util.*;
class MyTest
{
public static void main(String[] args)
{
String MyString="I love you. a b c s e f g ";
System.out.println(my1(MyString,7));
System.out.println(my1(MyString,2));

}
public static String my1(String s, int k)
{
StringTokenizer st=new StringTokenizer(s," \t\n\r,.;:");
String f=null;
for(int i=0;i<=st.countTokens();i++)
{
if(i==k)
f=st.nextToken();
st.nextToken();

}
return f;
}
}
-----------------
有这么个问题
System.out.println(my1(MyString,7));的时候后面输出的是null
我自己认为是st.countTokens()出了问题
换成 st.hasMoreTokens()以后得到解决
但是我在里面加了System.out.println(st.countTokens());输出是正确的10。循环应该不会出问题
不知道为什么会这样>.<
哪个学长教教我
谢谢了先
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 12:04:48  2楼
勤奋学习java,有个关于StringTokenizer的问题import java.util.*; class MyTest { public static void main(String[] args) { String MyString="I love you. a b c s e f g "; System.out.println(my1(MyString,7)); System.out.println(my1(MyString,2)); } public static String my1(String s, int k) { StringTokenizer st=new StringTokenizer(s," \t\n\r,.;:"); String f=null; for(int i=0;i.< 哪个学长教教我 谢谢了先 (more...)
还有附加问一个
blueJ的debugger怎么用?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 15:49:44  3楼
>>>>>>用J Creator不会死人的。
....我想看看程序运行的过程,一步一步的debug
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 15:51:33  4楼
>>>>>StringTokenizer st=new StringTokenizer(s," \t\n\r,.;:",fasle); 加上false
说清楚点,加false什么意思>.<
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 15:53:28  5楼
小伙子勤奋啊!when u use StringTokenizer, in the for loop if u write for( int i =0; i< st.countTokens(); i++) then u may get wrong answer, coz st.countTokens() is variable. In the for loop, u will call st.nextToken(), then after that, st.countTokens() minus 1 already. So u may get null use your program. :st.countTokens() is always count the tokens left. donot know what is blueJ. r u lfj??? hehehe
谢谢了:D说的真清楚.
ps
我是zz游戏版的斑竹
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-28 17:40:37  6楼
Come in-->>//for(int i=0;i (more...)
谢谢了,那个原来是变量>.<
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:夜不归宿 (等级:4 - 马马虎虎,发帖:2355) 发表:2003-04-29 23:41:48  7楼
关于debug楼下已经有人告诉你是什么原因了,我来给你讲解一下怎么debug这个program。 通常while loop里执行的东西,不是我们想要的东西,怎么办?把里面每步都print出来,看看是哪步出了问题。 将第19行的st.nextToken();里改成 System.out.println(i+" "+st.nextToken());。然后运行程序,看看结果如何。结果如下: 0 I 1 love 2 you 3 a 4 b 5 c null \\my1(MyString,7) 的结果 0 I 1 love 2 a 3 b 4 c you \\my1(MyString,2) 的结果 那个while loop在第一次执行了5次就停了,在第二次,i的指数只是到4就结束了。为什么?请你来分析吧。:)
CS1102 的tutor :D 谢谢duck
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 求学狮城 | 返回上一页 | 本主题共有 7 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码