日期:2014-05-20  浏览次数:20713 次

关于StringTokenizer的构造方法的使用
public   StringTokenizer(String   str,
                                              String   delim)
查了文档,大概的明白了具体的意思,可是后面的delim的参数有一点和我的程序对不上
我的程序是:
import   java.util.StringTokenizer;
public   class   TestStringToken
{
public   static   void   main(String   []   args)
{
int   n=0;
String   str= "A   String   constructor   cannot   be   passed   variables   of   type:@.char   arrays.@b.int   arrays.@c.   byte   arrays.@d.Strings   and   StringBuffers. ";
  StringTokenizer   str1=new   StringTokenizer(str, ",@.: ");   //具体是这句不太明白
System.out.println( "字符串中单词 ");
while(str1.hasMoreTokens())
{
n++;
System.out.print( "\t "+str1.nextToken());
                        }
                                    System.out.println( "\n字符串中共有单词:: "+n);
                  }
}


得出的结果是:
字符串中单词
                A   String   constructor   cannot   be   passed   variables   of   type   char   arrays
b               int   arrays             c                 byte   arrays         d               Strings   and   StringBuffer
s
字符串中共有单词::8


我就是不明白我所标明的那一句StringTokenizer   str1=new   StringTokenizer(str, ",@   .: ");   关于后面的分隔符是不是都可以将其字符串分开,可是结果并不像预料的那样阿,我把后面的第二个参数改了一下,把多字符改为了 "@ ",于是结果是:
字符串中单词
          A   String   constructor   cannot   be   passed   variables   of   type:                 .char   arrays.       b.int   arrays.       c.   byte   arrays.   d.Strings   and   StringBuffers.
字符串中共有单词::5

这样的结果都是用@分开的,很明显。
请高手帮忙上边的那个多分隔符是怎样解释的,如何对字符串进行分割的,谢谢了,万分感激

------解决方案--------------------
,@.: 每一个都是分割符,从字符串中把这几个字符全拿去剩下的就是分割的结果,从打印的内容也很容易看出:
1:A String constructor cannot be passed variables of type
2:char arrays
3:b
4:int arrays
5:c
6:byte arrays
7:d
8:Strings and StringBuffers

------解决方案--------------------
你的第一种例子的分隔符有4个:,@.:
所以会分割8个子字符串

你的第二种例子的分隔符只有1个:@
所以只会分割出5个子字符串,其他的几个都不是分隔符


------解决方案--------------------
已经分开了,只是打印出来看着他们之间好象没有\t,你换成\n试试