我现在卡在我的Java任务上。我要做的是编写一个程序,它将在文本文件中对一系列数字进行排序,并且该程序应从文件中读取任意数量的整数,对其进行排序并删除任何重复项并将新列表保存在同一个文件中。文件。
程序应该询问用户输入文件的名称,并检查文件是否存在,包含有效数据等。事情是我甚至不知道如何开始,我已经尝试但无法达到目标,甚至无法编写几行代码,因为我不知道如何开始。我只知道我可以使用JFileChooser来提示用户选择一个文件。
嗯,我知道这不是正确的问题类型,因为我必须展示我到目前为止所做的事情,或者证明我已经尝试了一些东西,但问题是我无法做到这一点。即使我已经尝试了几个小时,也要做任何事情。
答案 0 :(得分:0)
所以,你正在尝试制作一个Swing应用程序!而且您正在使用JFileChooser,因此无需检查文件是否存在,因为您在打开的窗口中看不到该文件并不存在。
关于文件的排序,您将文件内容读取为缓冲区流(可以逐行读取),并在TreeSet< Integer>中添加该行。这样只存储唯一值(所以不重复)。最后,只需将TreeSet数据写入文件即可。
答案 1 :(得分:0)
假设您需要帮助而不是完整的代码:
FileReader
... BufferedReader
及其readLine()
方法Integer.parseInt()
(假设:每行有一个数字)TreeSet<Integer>
及其add()
方法iterator()
(同一TreeSet<Integer>
)PrintWriter
存在一些差距,但阅读文档和检查相关示例将填补它们。
<小时/> 没有任何花哨/神秘的构造:
public static void main(String[] args) throws Exception {
TreeSet<Integer> numbers=new TreeSet<>();
FileReader fr=new FileReader("numbers.txt");
BufferedReader br=new BufferedReader(fr);
String line;
while((line=br.readLine())!=null){
numbers.add(Integer.parseInt(line));
}
br.close();
Iterator<Integer> it=numbers.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//PrintWriter pw=new PrintWriter("result.txt");
//while(it.hasNext()){
// pw.println(it.next());
//}
//pw.close();
}
评论的部分会将结果打印到文件中。
测试文件:numbers.txt
34
2345
736
2435
7436
2345
2435