【发布时间】:2018-02-03 14:58:36
【问题描述】:
输入 txt 文件中的俄语名称列表
- Александр
- Роман
- Михаил
此代码在调试期间在 IntelliJ Idea 中正确排序这些名称。
当我创建一个 jar 文件并从 Windows 控制台 java -jar E:\\sort-it.jar 运行它时,输出文件中的第一个名称是 Роман,虽然它应该是 Александр,就像在调试中一样。
jar 启动的错误顺序是
- Роман
- Александр
- Михаил
正确的顺序是
- Александр
- Михаил
- Роман
可能是什么问题?
package programs;
import java.io.*;
import java.util.*;
public class Main{
public static String inputFileName = "E:/in.txt";
public static String outputFileName = "E:/out.txt";
public static List<String> FetchFileData(String fileName) throws IOException {
List<String> tempArray = new ArrayList();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null){
tempArray.add(line);
}
reader.close();
return tempArray;
}
public static List<String> SortWords(List<String> inputArray) {
String temp;
for (int i = 0; i < inputArray.size(); i++){
for (int j = i + 1; j < inputArray.size(); j++){
if (inputArray.get(i).compareTo(inputArray.get(j)) > 0){
temp = inputArray.get(i);
inputArray.set(i, inputArray.get(j));
inputArray.set(j, temp);
}
}
}
return inputArray;
}
public static void WriteToFile(List<String> inputArray, String fileName) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < inputArray.size(); i++) {
writer.write(inputArray.get(i));
writer.newLine();
}
writer.close();
}
public static void main(String[] args) throws IOException {
List<String> unsortedArray;
List<String> sortedArray;
unsortedArray = FetchFileData(inputFileName);
sortedArray = SortWords(unsortedArray);
WriteToFile(sortedArray, outputFileName);
}
}
【问题讨论】:
-
也许您可以使用如下所示的整理器:stackoverflow.com/a/7633680/4636715 这样您就可以显式地将语言环境添加到代码中,而不是依赖于 İntelliJ 的。
-
但是如果我需要手动编写排序算法,我该如何改进我的代码?
标签: java sorting intellij-idea jar insertion-sort