|
Re: How to solve this problem?
|
Posted: Nov 6, 2003 3:34 AM
|
|
Here's one way you could do this.
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.StringTokenizer;
public class WordTokenizer implements Enumeration {
private StringTokenizer tokenizer;
int wordLength;
private Iterator iterator;
int tokens;
public WordTokenizer(String str,int newWordLength){
tokenizer = new StringTokenizer(str," ",false);
wordLength = newWordLength;
iterator = init();
}
public boolean hasMoreElements() {
return iterator.hasNext();
}
public Object nextElement() {
return iterator.next();
}
private Iterator init(){
ArrayList list = new ArrayList();
while(tokenizer.hasMoreTokens()){
String token = tokenizer.nextToken();
if( token.length()>=wordLength )
list.add( token );
}
tokens = list.size();
return list.iterator();
}
public boolean hasMoreWords() {
return iterator.hasNext();
}
public String nextWord() {
return (String)iterator.next();
}
public int countTokens(){
return tokens;
}
public static void main(String[] args){
WordTokenizer t = new WordTokenizer("Write a class that works as a filter for StringTokenizer",5);
while( t.hasMoreWords() ){
System.out.print( t.nextWord() + " " );
}
}
}
|
|