⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tokenchecker.java

📁 使用面向对象方法完成“快速拼写检查程序”的分析、设计和实现过程。快速拼写检查程序基本要求说明如下: 1.进行拼写检查的文件以文本文件形式存储于外存上;2.只检查文件中英文单词的拼写错误;3.单词是用字
💻 JAVA
字号:
/**
 * CopyRight team of 02计四
 */
package tokenchecker;
import java.util.*;
import java.io.*;

class TokenChecker{
	private SimpleDictionary dictionary;
	private TreeMap map;
	private boolean ignore;
	private String currentFile = "";
	private String createdDictionaryName;
	
	public TokenChecker() {
		ignore = false;
		map = new TreeMap();
	}
	
	public LinkedList tokenize(File file) throws IOException , Exception{
				
    	currentFile = file.getAbsolutePath();
    	LinkedList tokens = new LinkedList();
    	StreamTokenizer stok = new StreamTokenizer(new FileInputStream(file));
		stok.ordinaryChar('.');
      	stok.ordinaryChar('-');	
    	String s;
    	Token token;
    	int tok;
    	int lineNumber;
    	boolean b;
    	while((tok = stok.nextToken()) != stok.TT_EOF) {
	   		if(tok == StreamTokenizer.TT_WORD) {
		  		s = (String)stok.sval;
		  		lineNumber = stok.lineno();
		  		if(ignore)
		  			b = lookUp(s.toLowerCase());
		  		else 
		  			b = lookUp(s);
		  		token = new Token(s,lineNumber,b);
		  		tokens.add(token);
       		}
    	}
    	map.put(file.getAbsolutePath(),tokens);
   		return tokens;
  	}
   
  	public boolean lookUp(String w2) throws Exception {  	
  		if(dictionary == null)
  			throw new Exception("No dictionary load yet!");
  		return dictionary.containsWord(w2);
  	}
 		 
  
  	public boolean lookUp(Token tok) throws Exception {
    	return lookUp(tok.getWord());
  	}
  
  	public void loadDictionary(String dictionaryName)
         throws IOException,ClassNotFoundException,Exception {
    	ObjectInputStream objIn = new ObjectInputStream(new FileInputStream(dictionaryName));
    	dictionary = (SimpleDictionary)objIn.readObject();
  	}
  
  	public void saveFile(File to_file) throws IOException {
  	    //File  to_file = new File(filename);
    	FileWriter to = new FileWriter(to_file);
    	to.write(dictionary.getName() + "\r\n");
    	to.write(currentFile + "\r\n");
    	System.out.println("in saveFile : source file name is :" + currentFile);
    	LinkedList tokens = (LinkedList)map.get(currentFile);
      	Iterator i = tokens.listIterator();
      	Token tok;
      	String space = new String("                                        ");
      	while(i.hasNext()) {
       		tok = (Token)i.next();
    	  	if(!tok.isCorrect()) {
    	  	
          		to.write(tok.getWord());
				to.write(space.substring(0,20 - tok.getWord().length()));
				to.write(tok.getRow() + "\r\n");
			}
      	  	        
      	}
      	to.flush();
      	to.close();
  	}
  	
  	
    public void setCreatedDictionaryName(String name) {
    	
    	this.createdDictionaryName = name;
    }
  	public void createDictionary(String fileName)
  			throws FileNotFoundException, IOException{
    	SimpleDictionary sd = new SimpleDictionary();
    	FileReader reader;

      	
      	reader = new FileReader(fileName);
	  	StreamTokenizer tokenizer = new StreamTokenizer(reader);
	  	int tok;
    	String s;
	  	while((tok = tokenizer.nextToken()) != StreamTokenizer.TT_EOF) {
	   		if(tok == tokenizer.TT_WORD) {
		  		s = (String)tokenizer.sval;
          		sd.addWord(s);
       		}
      	}
      	FileOutputStream fout; 
      	if(createdDictionaryName != null) {
			fout = new FileOutputStream(createdDictionaryName);
			sd.setName(createdDictionaryName);
      		createdDictionaryName = null;	 
      	} else {
      		fout = new FileOutputStream(fileName);
      		sd.setName(fileName);
      	}
      	ObjectOutputStream out = new ObjectOutputStream(fout);
      	out.writeObject(sd);
	}
	public void setIgnore(boolean b) {
		
		ignore = b;
	}
	public SimpleDictionary getDictionary() {
		return this.dictionary;
	}
	public void setCurrentFile(String name) {
		this.currentFile = name;
	} 
	
	public void removeFile(String fileName) {
		
		map.remove(fileName);
	}
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -