用户需求:
英语的26 个字母的频率在一本小说中是如何分布的?
某类型文章中常出现的单词是什么?
某作家最常用的词汇是什么?
参考他人代码如下:
package longword; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Main { public static int findwordlong(String text){ String[] array = {".",",","?","!"}; for (int i1 = 0; i1 < array.length; i1++) { text = text.replace(array[i1]," "); } String[] textArray = text.split(" "); return textArray.length; } public static String[] findword(String text){ String[] array = {".",",","?","!","“","”"," "}; for (int i1 = 0; i1 < array.length; i1++) { text = text.replace(array[i1]," "); } String[] textArray = text.split(" "); return textArray; } public static String readtxt(String txt) throws IOException { File file = new File(txt);//定义一个file对象,用来初始化FileReader FileReader reader = null; try { reader = new FileReader(file); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }//定义一个fileReader对象,用来初始化BufferedReader BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存 StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中 String s = ""; while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格 sb.append(s);//将读取的字符串添加换行符后累加p存放在缓存中 } bReader.close(); String str = sb.toString(); return str; } public static void appendMethodB(String fileName, String content) { try { //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件,如果为 true,则将字节写入文件末尾处,而不是写入文件开始处 FileWriter writer = new FileWriter(fileName, true); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static boolean judeFileExists(String txt) throws IOException { File file = new File(txt); if (!file.exists()) { System.out.println("文件不存在!"); return false; } else if(file.length() == 0) { System.out.println("文件为空!"); return false; } String str=readtxt("input.txt"); if(findwordlong(str)==1) { System.out.println("文件只有一个单词!"); return false; } else { return true; } } public static void main(String[] args) throws IOException { // TODO Auto-generated method stub if(judeFileExists("input.txt")) { String str=readtxt("input.txt"); int i; int l= findwordlong(str); String []word=new String[l]; char []first=new char[l]; char []tail=new char[l]; word=findword(str); for(i=0;i<l;i++) { if(word[i].length()!=0) { first[i]=word[i].charAt(0); tail[i]=word[i].charAt(word[i].length()-1); System.out.println(word[i]); } } String stemp=word[0]; appendMethodB("output.txt", word[0]); for(i=1;i<l;i++) { if(first[i]==stemp.charAt(stemp.length()-1)) { stemp=stemp+"-"+word[i]; appendMethodB("output.txt", "-"+word[i]); } } if(stemp.equals(word[0])) { System.out.println("没有首尾相接的单词!"); } else{ System.out.println(stemp); } } } }