2019.10.4 上课测试

时间:2019-11-06
本文章向大家介绍2019.10.4 上课测试,主要包括2019.10.4 上课测试使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

首先统计字母的个数,和字母的百分比,区分大小写;

第二步统计单词的个数,不区分大小写;输出单词,和单词的个数和;

1、先将单词找出来

2、将单词存进数组中;

3、将重复的单词进行去重,然后再找与去重单词之后相同的个数;进行记录;

4、输出这些单词;

package src.zy03;
import java.io.*;
import java.text.DecimalFormat;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
public class halibote 
{ 
    private static String str="";
    private static Scanner sc=new Scanner(System.in);
    private static BufferedReader br=null;
    private static String a[]=new String[90000000]; 
    private static String c[]=new String[90000000]; 
    private static int b[]=new int[9000000]; 
    private static int l=0;
    private static int l1=0;
    private static int n=0;
    private static int j=0;
public static void cunfang() throws IOException
{//将单词存到数组a
    while(str!=null) 
   {
      int i=0;
      str=str.toLowerCase(); //把大写改成小写
      for(i=0;i<str.length();i++) 
      {
       if((str.charAt(i)>96&&str.charAt(i)<123)) 
       { 
        a[j]=a[j]+str.charAt(i); 
       }
        if(str.charAt(i)==' '||str.charAt(i)==','||str.charAt(i)=='.')
        {
          if(!a[j].equals(""))
          {
             j=j+1;
             a[j]="";
          }
        }
       } 
             str=br.readLine();
     }
           l=j;            
}
public static void show() //显示
{
    for(int k=0;k<l1;k++) 
    {
     System.out.println(c[k]+"\t"+b[k]);
    }
}
public static void paixu() //排序
{
   int t3=0;
   int t2=0;
   String sr="";
   for(int i=0;i<l-1;i++)
     {
        t3=i;
        for(int j=i+1;j<l1;j++) 
        {
          if(b[t3]<b[j])
          {
            t3=j;
          }
        }
    if(t3!=i) 
    {
      t2=b[i];
      b[i]=b[t3];
      b[t3]=t2;
      sr=c[i];
      c[i]=c[t3];
      c[t3]=sr;
     }
    }
}
public static void quchong()
{//去重
     for(int k=0;k<l;k++) 
     {
      b[k]=0;
     }
   c[0]=a[0];
   int tt=1;
   Boolean rt=true;

   for(int i=1;i<l;i++)
   {
    rt=false;
    for(int j=0;j<tt;j++)
    {
      if(a[i].equals(c[j])) 
      {
        rt=true;
        break;
      }
     }
      if(!rt) 
      {
       c[tt]=a[i];
       tt++;
      }
     }
     l1=tt;
     for(int i=0;i<l1;i++) 
     {
      for(int j=0;j<l;j++)
      {
        if(c[i].equals(a[j])) 
        {
         b[i]++;
        }
       }
      }
}
public static void Readfile() 
{
    File file=new File("D:\\大二java\\halibote\\Harry Potter and the Sorcerer's Stone.txt"); 
    try 
    {
      InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");//InputStreamReader实现从字节流到字符流的转换
      br=new BufferedReader(read);
      str=br.readLine();
      cunfang();
      br.close();
      read.close();
     }
    catch(IOException e) 
    {
      System.out.println("读取失败!");
      e.printStackTrace();
    }
    System.out.print(123);
}

public static void Writefile() throws IOException
{
     File file=new File("D:\\大二java\\halibote\\Harry Potter and the Sorcerer's Stone.txt");
       if(!file.exists())
       file.createNewFile();
       FileWriter write = new FileWriter(file,true);
      BufferedWriter out=new BufferedWriter(write);
      for(int i=0;i<n;i++)
      {
      StringBuffer sb=new StringBuffer();
      out.write("这是第"+(i+1)+"个: ");
      out.write(c[i]+"\t"+b[i]);
      out.write("\r\n");
      } 
     
      out.close();
}

public  static void zimu() throws IOException
{

    BufferedReader br=new BufferedReader(new FileReader("D:\\大二java\\halibote\\Harry Potter and the Sorcerer's Stone.txt"));        
    TreeMap<Character,Integer> hm=new TreeMap<>();
    int  bb;
    while((bb=br.read())!=-1) {    
         if((bb>='A'&&bb<='Z')||(bb>'a'&&bb<='z')) {
             hm.put((char)bb,hm.containsKey((char)bb)?hm.get((char)bb)+1:1);
        }
        }    
    br.close();
    int max=0;
    int sum=0;
    int t=0;
    for(Character k: hm.keySet()) 
    {
        sum=sum+hm.get(k);
      }
    TreeSet<Character> ts=new TreeSet<>(new Comparator<Character>()
    {
        public int compare(Character a,Character b) 
        {
            int num=hm.get(a)-hm.get(b);
            return num==0?1:(-num);
        }
    });
    for(Character k: hm.keySet()) {
        ts.add(k);
    }
    DecimalFormat df = new DecimalFormat("0.00%");
    for (Character c : ts)
    {
        float bai=(float)hm.get(c)/sum;
       
        System.out.println(c+" "+hm.get(c)+" "+df.format(bai));
    }
    
    System.out.println(sum);

}

public static void main(String[] args) throws IOException 
{    
     zimu();
     System.out.println("请输入您要统计前几个最常出现的单词:");
     n=sc.nextInt();
     a[0]="";
     Readfile(); 
     quchong();
    paixu();
     show(); 
     Writefile();

} 

} 

 将.txt文档放进目录中,进行递归查找;先查找目录是否存在,将.txt文档存放进数组中;依次递归调用,输出相同单词的个数;

package Ioliu;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

import Ioliu.*;

public class wenjianjia 
{
    public static List<String> getAllFilePaths( String filePath, List<String> filePathList ) {
        File[] files = new File( filePath ).listFiles();
        if ( files == null ) {
            return filePathList;
        }
        for ( File file : files ) {
            if ( file.isDirectory() ) {
                filePathList.add( file.getPath() + "注:此处为文件夹" );
                getAllFilePaths( file.getAbsolutePath(), filePathList );
            } else {
                filePathList.add( file.getPath() );
            }
        }
        return filePathList;
    }


    public static void main(String[] args) throws IOException 
    {    
     
        piao p=new piao();
         File file=null;
         List<String> filePaths = new ArrayList<>();
         filePaths = getAllFilePaths( "D:\\\\大二java\\\\halibote", filePaths );
         for ( String path : filePaths ) {
              System.out.println( path );
              file=new File(path);
              p.Readfile(file);
              p.quchong();
              p.paixu();
              p.show();
              
         }

    }
}

这部分主要是部分函数的功能不知道;还有对数组的掌握并不是很清楚;很容易混乱,学习的内容不完善,希望可以多敲代码来完善自己的知识;

原文地址:https://www.cnblogs.com/1234yyf/p/11808812.html