以下此程序在运行时不会停止。我不认为我犯了一个重大错误,但请帮助我,因为我是Java的新手。
import java.util.*;
public class ReverseWords {
public static void main( String args[] ) {
String paragraph;
Scanner input = new Scanner (System.in);
System.out.print("Enter a paragraph: ");
paragraph = input.nextLine();
paragraph = paragraph.trim();
StringTokenizer tokens = new StringTokenizer(paragraph, ".");
while (tokens.hasMoreTokens()){
for (int i = paragraph.length() - 1; i>=0; i--) {
System.out.print(paragraph.charAt(i));
}
System.out.print(". ");
}
System.out.println();
}
}
当我输入时: The quick brown fox. Jumps over. The lazy dog.
它输出: .god yzal ehT .revo spmuJ .xof nworb kciuq ehT.
无限次。
非常感谢你!
答案 0 :(得分:3)
看看这个:
while (tokens.hasMoreTokens())
你永远不会抓取下一个令牌。因此,如果它返回真实,它将永远这样做。你可能想要(在while循环中):
String token = tokens.nextToken();
for (int i = token.length() - 1; i >= 0; i--) {
System.out.print(token.charAt(i));
}
System.out.print(". ");
假设你想要反转每一行中的每个部分句子。目前还不清楚你的目标是什么。
答案 1 :(得分:2)
您甚至从未在循环中使用tokenizer
。因此,hasMoreTokens()
始终返回true。
答案 2 :(得分:0)
我从未使用过Java,但除非“StringTokenizer”非常奇怪:你的while循环检查“hasMoreTokens”,但是循环的主体永远不会删除标记。所以它总会有更多的代币......