将任意字符串的标记数量显示为1

时间:2013-07-21 11:42:32

标签: java string

我尝试在java中使用countTokens()方法,对于我作为字符串提供的任何输入,它只显示1个没有令牌。

import java.util.*;

public class uhu {

  public static void main(String[] args) {

    System.out.println("Hit n");
    Scanner sc = new Scanner(System.in);
    try {
        int n = sc.nextInt();//scan the size of the array
        String[] str=new String[n];
        System.out.println("Enter elements");
        sc.nextLine();
        for (int i = 0; i < n; i++) //scanning the elements 
        {
            str[i]=sc.nextLine();
        }
        for (int i = 0; i < n; i++) //printing the count of tokens
        {
            StringTokenizer st=new StringTokenizer(str[i]);
            System.out.println("Count of tokens for "+i+"string is :"+st.countTokens());
        }
    } finally {
        if (sc != null)
            sc.close();
    }

  }

}

2 个答案:

答案 0 :(得分:0)

现在不鼓励使用StringTokenizer。请改用String.split()

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)

因为默认情况下StringTokenizer使用空格分割字符串,所以使用split(&#34;&#34;)将使用空格打破字符串

答案 1 :(得分:0)

默认情况下,StringTokenizer使用空格字符,制表符,换行符,回车符和换页符的分隔符列表。

您的输入String可能不包含任何这些字符,导致令牌数为1

尝试用空格分隔输入String