作业一、
  描述:有点像完形填空的方式,以给定的一个类和一个接口为基础,完成第三个类。实现的目标如下,"[email protected](1)"(格式说明:单词@路径(行号)。也就是说,计算一个文本文件中每一个单词出现的行数。
  1、第一个已知类(Word)
public class Word implements Serializable
{
final public String path,text;
final public long lineNum;

public Word(String text,String path,long lineNum)
{
this.text = text;
this.paht = path;
this.lineNum = lineNum;
}

public String toString()
{
return text + "@" + path + "(" + lineNum + ")";
}


}
  2、第一个已知接口(WordStream
     public interface WordStream
{
boolean hasNext();
Word next();
}
  3、需完成的类(FileWordStream)
     
public class FileWordStream implements WordStream
{


public FileWordStream(String path)
{
.......
}

public boolean hasNext()
{
.......
}


public Word next()
{
......
}

public static void main(String args[]) throw Exception
{
WordStream w = new FileWordStream(arg[0]);
while(w.hasNext())
 {
  System.out.println(w.next());
  }
}
}
   说明:“......"处就是要完成的地方。指定的类为java.util.StringTokenizer和LineNumberReader(new FileReader(path))作业二、
  要求:写一个名为FileConcordance的类实现Concordance接口,同时要用到作业一的相关类.
  import java.util.Iterator
  public interface Concordance
  {
    void addWords(WordStream w);
    WordStream occurences(String word);
    Iterator words();
}  实现目标:统计同一个单词在一个文件中的不同行出现的行数,以及在不同文件中出现的行数。
  main()方法如下:
  public static void main(String args[]) throws Exception
{
   FileConcordance conc = new FileConcordance();
   for (int i = 0 ; i< args.length;i++)
      conc.addWords(new FileWordStream(args[i]));
   Iterator words = conc.words(); 
   while (words.hasNext())
     {
       String path = null;
       String word = (String) words.next();
       int  n=0;
       System.out.print(word);
       WordStream occurences = conc.occurences(word);
       while(occurences.hasNext())
          {
            Word occurence = occurences.next();
             if(occurence.path != path)
               {
                path = occurence.path;
                System.out.print("\n\t");
                System.out.print("path);
                n = 0;
                }
             n++;
             if(n%10 == 0)
                System.out.print("\n\t");
             else
                System.out.print(" ");
             System.out.print(occurence.lineNum);
 
           }
          System.out.print();
      }
}Email&MSN:[email protected]