-4

我尝试在 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();
    }

  }

}
4

2 回答 2

0

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

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

String尝试用空格分隔您的输入。

于 2013-07-21T12:26:18.167 回答
0

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

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

由于默认情况下 StringTokenizer 使用空格分割字符串,因此使用 split(" ") 将使用空格分割字符串

于 2013-07-21T11:55:07.470 回答