从文本文件中读取单词,并将所有不重复的单词按升序显示
/*
从文本文件中读取单词,并将所有不重复的单词按升序显示
将命令行获取的文件按行读入,然后将每行文件内容按字符串处理为单词形式
按行读入可以使用BufferedReader 类的readLine()方法,
每行处理为单词可以使StringTokenizer 类或者String 类的split()方法。
使用泛型技术创建字符串规则集,不重复地存放单词;
由散列集创建树形集,形成单词的自然排列顺序(升序)。
*/
import java.io.*;
import java.util.*;
class Demo2
{
public static void main(String[] args)throws
IOException
{
BufferedReader br=new BufferedReader(new FileReader(args[0]));//文本文件作为命令行传递
Set<String> set=new HashSet<String>();
String t="";
while((t=br.readLine())!=null)
{
String[] words=t.split("\n\t\r.,;:?!");
for(int i=0;i<words.length;i++)
{ set.add(words[i]);}
}
sop(set);
TreeSet<String> ts=new TreeSet<String>(set);
sop(ts);
}
public static void sop(Set s)
{
Iterator it=s.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
谁告诉那里写错了?输出是原文,未去除重复,也没排序。初学,求解答
------解决方案--------------------
String[] words = t.split("\\W");// \W 一个非单词的字符
------解决方案--------------------
public class Demo2 {
public static void main(String[] args) throws IOException {
String path = "F:\\word.txt";//改成你的文件路径
BufferedReader br = new BufferedReader(new FileReader(path));
Set<String> set = new HashSet<String>();
String t = "";
while ((t = br.readLine()) != null) {
String[] words = t.split("\\W");
for (int i = 0; i < words.length; i++) {
set.add(words[i]);
}
}
sop(set);
TreeSet<String> ts = new TreeSet<String>(set);
sop(ts);
}
public static void sop(Set s) {
Iterator it = s.iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
System.out.println();
}
}
------解决方案--------------------改成
t.split("\\W+");更合适一些
或者
String[] words=t.split("\n\t\r.,;:?!");
这一句改成
String[] words=t.split("[\n\t\r.,;:?!]");