时间: 2004-9-08 23:16:27 标题: |
| | to 凤舞凰扬: 没有夸张,如果用你的办法,逗号之类的间隔符号虽然被去掉了,却没有象庄表伟要求的那样被打印出来;
to sankxuan: 用了StringTokenizer(a,SEPARATORS,true)的三参数的构造函数,漂亮,确实是最好的实现。
------------------------------------------------------ 重构了一下,下面是重构后的代码和执行结果:
java代码: | import java.util.StringTokenizer;
public class Test{
public static final String SEPARATORS = " ,/t:'';?!";
public static String reverse(String input){
StringTokenizer st = new StringTokenizer(input, SEPARATORS, true); StringBuffer words = new StringBuffer(""); while (st.hasMoreTokens()) { words.insert( 0, st.nextToken() ); } return words.toString(); }
public void testReverse(){
String[] sentences = new String[]{ "Hello, world!", "I am a student", "Am I a student? yes, or no", "Am I a student ? yes , or no", "Zhuang says:'It's just a coding game.'" };
for (int i = 0; i < sentences.length; i++) System.out.println("Sentence[" + i + "]=[" + sentences[i]+"], " + "After reversed: [" + Test.reverse(sentences[i])+"]");
}
public static void main(String[] args){ new Test().testReverse(); }
}
| --------------------------------------------------------------------------
执行结果:
引用: | >ant exec
Buildfile: build.xml
exec: [java] Sentence[0]=[Hello, world!], After reversed: [!world ,Hello] [java] Sentence[1]=[I am a student], After reversed: [student a am I] [java] Sentence[2]=[Am I a student? yes, or no], After reversed: [no or ,yes ?student a I Am] [java] Sentence[3]=[Am I a student ? yes , or no], After reversed: [no or , yes ? student a I Am] [java] Sentence[4]=[Zhuang says:'It's just a coding game.'], After reversed: ['game. coding a just s'It':says Zhuang] |
|
|
| |
|
学习了一下,决定下次遇到这样回答
java代码: | import java.util.StringTokenizer;
public final class StringReverser {
public final static String DEFAULT_DELI = " ,/t:'';?!"; public final static boolean DEFAULT_INCLUDE_DELT = true; private StringTokenizer tokenizer = null;
public StringReverser(String source) { this(source,DEFAULT_DELI,DEFAULT_INCLUDE_DELT); } public StringReverser(String source,String delimiters) { this(source,delimiters,DEFAULT_INCLUDE_DELT); } public StringReverser(String source,String delimiters,boolean includeDelimiter) { tokenizer = new StringTokenizer(source,delimiters,includeDelimiter); }
public String reverse() { StringBuffer result = new StringBuffer(); while(tokenizer.hasMoreTokens() ) { result.insert(0,tokenizer.nextToken() ); } return result.toString(); } } |
java代码: | StringReverser reverser = new StringReverser("this is a test String"); String reversString = reverser.reverse();
|
时间: 2004-9-13 13:59:35 标题: |
| | 呵呵,只是各人编程序风格不同,思路其实都差不多。 换了我,会把 tokenizer 挪到 reverse()里面去,因为 tokenizer只有在 reverse()里才被用到,封在method里它的作用域比封装在class中就更小了。 |
// -----------------------------------------------------------------------------
// StringReverseWord.java
// -----------------------------------------------------------------------------
import java.util.*;
/**
* -----------------------------------------------------------------------------
* Used to provide an example of how to reverse all words in a given string.
* -----------------------------------------------------------------------------
*/
public class StringReverseWord {
private static void doStringReverseWord() {
String a = "Alex Michael Hunter";
Stack stack = new Stack();
StringTokenizer tempStringTokenizer = new StringTokenizer(a);
while (tempStringTokenizer.hasMoreTokens()) {
stack.push(tempStringTokenizer.nextElement());
}
System.out.println("/nOriginal string: " + a);
System.out.print("Reverse word string: ");
while(!stack.empty()) {
System.out.print(stack.pop());
System.out.print(" ");
}
System.out.println("/n");
}
/**
* Sole entry point to the class and application.
* @param args Array of String arguments.
*/
public static void main(String[] args) {
doStringReverseWord();
}
} |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理