import java.util.*;//旧方法
public class 四_6 {
public static void main(String[] args){
String s1= " public static void, main";
String s2= "StringTokenizer pas2? =new StringTokenizer ";
StringTokenizer pas1=new StringTokenizer(s1," ,");
  StringTokenizer pas2=new StringTokenizer(s2," ?");
int n1=pas1.countTokens(),n2=pas2.countTokens();
System.out.println("s1有单词:"+n1+"个,全部单词如下:");
while(pas1.hasMoreTokens()){
String s=pas1.nextToken();
System.out.println(s);
}
System.out.println("s2有单词:"+n2+"个,全部单词如下:");
while(pas2.hasMoreTokens()){
String s=pas2.nextToken();
System.out.println(s);
}

}}
/*现在用新方法
public class 四_6_xin {
public static void main(String[] args){
String[] s1= " public static void, main".split("\\s");;//这里仅仅是去掉了空格
String[] s2= "StringTokenizer pas2? =new StringTokenizer ".split("\\s");;//这里仅仅是去掉了空格 System.out.println("s1有单词:"+s1+"个,全部单词如下:");
for (int x=0; x<s1.length; x++)
         System.out.println(s1[x]); System.out.println("s2有单词:"+s2+"个,全部单词如下:");
for (int x=0; x<s2.length; x++)
         System.out.println(s2[x]);

}}
当用split方法不知道该如何使用参数去掉" ,"或者是" ?" 也是就是分隔符
再者旧方法中的计数功能要在新方法中实现,可能需要用到java.util.regex包
不知道该怎么计数。请赐教
*/

解决方案 »

  1.   

    看看regex吧。?是regex的关键字,需要使用"\\?"转义以后才可以使用。
      

  2.   


    import java.util.*;//旧方法
    public class 四_6 {
    public static void main(String[] args){
    String s1= " public static void, main";
    String s2= "StringTokenizer pas2? =new StringTokenizer ";
    StringTokenizer pas1=new StringTokenizer(s1," ,");
      StringTokenizer pas2=new StringTokenizer(s2," ?");
    int n1=pas1.countTokens(),n2=pas2.countTokens();
    System.out.println("s1有单词:"+n1+"个,全部单词如下:");
    while(pas1.hasMoreTokens()){
    String s=pas1.nextToken();
    System.out.println(s);
    }
    System.out.println("s2有单词:"+n2+"个,全部单词如下:");
    while(pas2.hasMoreTokens()){
    String s=pas2.nextToken();
    System.out.println(s);
    }

    }}
    /*现在用新方法
    public class 四_6_xin {
    public static void main(String[] args){
    String[] s1= " public static void, main".split("\\s");;//这里仅仅是去掉了空格
    String[] s2= "StringTokenizer pas2? =new StringTokenizer ".split("\\s");;//这里仅仅是去掉了空格 System.out.println("s1有单词:"+s1+"个,全部单词如下:");
    for (int x=0; x<s1.length; x++)
             System.out.println(s1[x]); System.out.println("s2有单词:"+s2+"个,全部单词如下:");
    for (int x=0; x<s2.length; x++)
             System.out.println(s2[x]);

    }}
    当用split方法不知道该如何使用参数去掉" ,"或者是" ?"
    再者旧方法中的计数功能要在新方法中实现,可能需要用到java.util.regex包
    不知道该怎么计数。请赐教
    */重新规范一下格式
      

  3.   

    split("[,?\\s]")不是没有人会,是怕教不会^_^同意4楼,建议先学些正则的基本语法,然后找些简单例子看看
      

  4.   

    嗯,很谢谢你们,但是关于计数功能,在这行不通。
    System.out.println("s1有单词:"+s1+"个,全部单词如下:");
    s1计数不是安单词个数来算的。。
      

  5.   


    String[] s1= " public static void, main".split("\\W?\\s");
    String[] s2= "StringTokenizer pas2? =new StringTokenizer ".split("\\??\\s");
    2楼给我很大启发但是S1输出后第一排是空行,虽然下面是正确的输出,用fosjos兄的(,?\\s)也是同样出现这样的空行S2自己解决了。现在就是关于单词的计数问题了。。看来需要一点分数刺激才行啊O(∩_∩)O
      

  6.   

    用"[,?\\s]+"或"\\W+"s1.length()不就可以了
    再判断一下首尾是否空字符串怀疑楼主是否初学java
      

  7.   

    崩溃啊,何止是初学,才学不到一个礼拜而且是不会其他任何语言的那种菜菜鸟。不过我就是比较喜欢寻求思路,看完一章节可能会去看看JDK文档,就是因为上面说StringTokenizer是考虑到兼容性问题才保留下来的。所以我就在寻求新思路所以我是需要理解问题,不只是解决问题
    学东西虽然不能一日千里,但我想这样的学习态度应该是正确的。。
      

  8.   


    public class 四_6_xin {
    public static void main(String[] args){
    String[] s1= " public static void, main".split("\\W?\\s");
    String[] s2= "StringTokenizer pas2? =new StringTokenizer ".split("\\??\\s"); System.out.println("s1有单词:"+(s1.length-1)+"个,全部单词如下:");
    for (int x=1; x<s1.length; x++)
             System.out.println(s1[x]); System.out.println("s2有单词:"+s2.length+"个,全部单词如下:");
    for (int x=0; x<s2.length; x++)
             System.out.println(s2[x]);

    }}
    这是用强制手段得到的,结果和旧方法一致。但又有何意义?s1一改就要整个翻新
      

  9.   

    String[] s = " public static void, main".split("\\W+");
    int first = 0;
    int last = s1.length-1;
    if(s1[first].length()==0)
      first++;
    if(s1[last].length()==0)
      last--;
    System.out.println("s有单词:"+(last-first+1)+"个,全部单词如下:");
    for(int x=first; x<=last; x++)
      System.out.println(s[x]);