我正在尝试反转字符串。我正在从字段中读取字符串,名为abc.txt
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
public class MrText {
private static final String NEW_LINE_SEPARATOR = System
.getProperty("line.separator");
public static void main(String[] args) throws IOException,
ArrayIndexOutOfBoundsException {
FileReader input = new FileReader("abc.txt");
BufferedReader bufRead = new BufferedReader(input);
StringBuffer rvsWords = new StringBuffer();
String line;
line = bufRead.readLine();
while (line != null) {
StringTokenizer tok = new StringTokenizer(line);
String lineReversed = "";
while (tok.hasMoreElements()) {
String word = (String) tok.nextElement();
for (int i = word.length() - 1; i >= 0; i--) {
rvsWords.append(word.charAt(i));
}
}
line = bufRead.readLine();
if (line != null) {
rvsWords.append(NEW_LINE_SEPARATOR);
}
}
bufRead.close();
// File outFile = new File("gggggggggggggggggggg.txt");
FileWriter writer = new FileWriter(outFile);
writer.write(rvsWords.toString());
writer.close();
// System.out.println(rvsWords.toString());
// rvsWords.setLength(0);
}
}
输入的文本文件: abc.text包含
IT comp mech civil
按上述代码输出: TI pomc livic hcem
我输出了输出: comp IT 民用机械
答案 0 :(得分:2)
您无需更改字母组成单词的顺序: nextElement返回下一个单词。 然后将此循环应用于此单词:
for (int i= word.length()-1; i >=0 ; i--)
{
rvsWords.append(word.charAt(i));
}
此循环导致字母的顺序相反。 因此不要使用它。
然后将一个元素保留在临时变量中,以便用下一个元素切换它。
容易羞怯
答案 1 :(得分:1)
for (int charIndex= myString.length()-1; charIndex >=0 ; charIndex--)
{
reversedString.append(originalString.charAt(charIndex));
}
答案 2 :(得分:1)
您也可以使用apache commons库中的StringUtils。
它有很多用途,其中之一是StringUtils.reverse("yourStringHere");
答案 3 :(得分:0)
使用StringBuffer类可以轻松地反转字符串。
StringBuffer revString = new StringBuffer(word.toString());
System.out.println(revString.reverse().toString());
答案 4 :(得分:0)
你不需要你的for循环(它正在颠倒你的话)
直接取词并在输出中巧妙地设置它们:
StringBuffer rvsWords = new StringBuffer();
String line;
line = bufRead.readLine();
int index = 0;
while (line != null) {
StringTokenizer tok = new StringTokenizer(line);
while (tok.hasMoreElements()) {
String word = (String) tok.nextElement();
rvsWords.insert(index, " ");
rvsWords.insert(index, word);
}
line = bufRead.readLine();
if (line != null) {
rvsWords.append(NEW_LINE_SEPARATOR);
}
index = rvsWords.length() - 1;
}