Java作业整理 敏感词汇

1. 敏感词汇分析(难)

要求:任意选择一个文本文件,分析该文件,如果存在敏感词汇(这些词汇保存在sentive.txt文件中,每个词占一行),报告每个词出现的次数。


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;
public class sensitive_Vocabulary {
	
	Scanner input=new Scanner(System.in);
	public String[] ch;  
	public void write(int number) throws Exception{
		System.out.println("请输入你的敏感词汇:");
  	  ObjectOutputStream output =
  		  new ObjectOutputStream(new FileOutputStream("sensitive.txt"));      
  	  for(int i = 0; i < number;i++){
  		 String str = input.nextLine();
  		 output.writeUTF(str);
  	  }
  	  
  	output.close(); 
    }
	public void readObject(int number) throws Exception{
		ObjectInputStream input = 
			new ObjectInputStream(new FileInputStream("sensitive.txt"));
		       ch = new String[number];
			for(int j = 0; j < number; j++){
		     ch[j] = input.readUTF();
		   //  System.out.println("敏感词汇为:"+ch[j]);
			}
		   	   input.close();
            }		
}




import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class read_File {
      public static void main(String[] args) throws Exception {
    	  Scanner input=new Scanner(System.in);
    	  
    	  System.out.println("请输入你所要输入的敏感词汇个数:");
    	  int number=input.nextInt();
    	  int[] array=new int[number];
    	  for(int r=0;r<number;r++)
    		  array[r]=0;
    	  sensitive_Vocabulary test=new sensitive_Vocabulary();
    	  test.write(number);
    	  test.readObject(number);
            try {
            StringBuffer sb= new StringBuffer("");
            FileReader reader = new FileReader("G://test.txt");
            BufferedReader br = new BufferedReader(reader);
            String str = null;
            String str_fir;
            while((str = br.readLine()) != null){
                  sb.append(str+"\n");                
                  for(int k=0;k<number;k++){
                	  str_fir=" "+test.ch[k]+" ";
                	  
                	 array[k] += countStr(str,str_fir);
                //	 System.out.println(array[k] +" " +str+"\n"+test.ch[k]);
                  }
            }
          
            br.close();
            reader.close();
      }
      catch(FileNotFoundException e) {

                  e.printStackTrace();
            }
            catch(IOException e) {

                  e.printStackTrace();
            }
            for(int j=0;j<number;j++)
            	System.out.println("敏感词"+" "+test.ch[j]+" " +"有"+array[j]
            	                                                       +"个");
      }
      public static int countStr(String str1, String str2){ 
      	int counter=0;
          if (str1.indexOf(str2) == -1){  
              return 0;
          } 
              while(str1.indexOf(str2)!=-1){
              	counter++;
              	str1=str1.substring(str1.indexOf(str2)+str2.length());
              }
              return counter;  
      }  
}


  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用 Trie 树(字典树)实现敏感词汇的分析程序。以下是一个简单的 Java 实现: ```java public class SensitiveWordsAnalyzer { private TrieNode root; public SensitiveWordsAnalyzer() { root = new TrieNode(); } public void addSensitiveWord(String word) { TrieNode node = root; for (char c : word.toCharArray()) { if (!node.containsKey(c)) { node.put(c, new TrieNode()); } node = node.get(c); } node.setEnd(); } public boolean containsSensitiveWords(String text) { TrieNode node = root; for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); if (node.containsKey(c)) { node = node.get(c); if (node.isEnd()) { return true; } } else { node = root; } } return false; } private static class TrieNode { private TrieNode[] children; private boolean isEnd; public TrieNode() { children = new TrieNode[256]; } public boolean containsKey(char c) { return children[c] != null; } public TrieNode get(char c) { return children[c]; } public void put(char c, TrieNode node) { children[c] = node; } public boolean isEnd() { return isEnd; } public void setEnd() { isEnd = true; } } } ``` 使用示例: ```java SensitiveWordsAnalyzer analyzer = new SensitiveWordsAnalyzer(); analyzer.addSensitiveWord("敏感词汇1"); analyzer.addSensitiveWord("敏感词汇2"); String text = "这是一段包含敏感词汇1和敏感词汇2的文本"; if (analyzer.containsSensitiveWords(text)) { System.out.println("文本中包含敏感词汇"); } else { System.out.println("文本中不包含敏感词汇"); } ``` 输出结果为: ``` 文本中包含敏感词汇 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值