• 文件与流


    实验一:统计文本中的各个字母出现的次数,倒序输出,输出字母出现次数和百分比

    package Harry;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Harry {
        public static <type> void main (String[] args) throws FileNotFoundException {
            File file=new File("C:\\Users\\Administrator\\Desktop\\Harry Potter and the Sorcerer's Stone.txt");                  //读取文件
            if(!file.exists()){
                System.out.println("文件不存在");
                return;
            } 
            int []num=new int[100];
            char []letter=new char[100];
            char a='A';
            char b='a';
            
            for(int i=1;i<=52;i++) {
                if(i<=26) {
                    letter[i]=a++;
                }
                else {
                    letter[i]=b++;
                }
            }
            
            Scanner scanner=new Scanner(file);
            HashMap<String,Integer> hashMap=new HashMap<String,Integer>();
            while(scanner.hasNextLine()) {
                String line=scanner.nextLine();
                String[] lineWords=line.split(" ");
                for(int i=0;i<lineWords.length;i++) {
                    for(int j=0;j<lineWords[i].length();j++) {
                        if(lineWords[i].charAt(j)>='A'&&lineWords[i].charAt(j)<='Z') {
                            num[lineWords[i].charAt(j)-'A'+1]++;
                        }
                        else if(lineWords[i].charAt(j)>='a'&&lineWords[i].charAt(j)<='z') {
                            num[lineWords[i].charAt(j)-'a'+1+24]++;
                        }
                            
                    }
                }
                    }
            int sum=0;
            for(int i=1;i<=52;i++) {
                sum+=num[i];
            }
            for(int i=1;i<=52;i++) {
                for(int j=i+1;j<=52;j++) {
                    if(num[i]<num[j]) {
                        int t=num[i];
                        num[i]=num[j];
                        num[j]=t;
                        
                        char s=letter[i];
                        letter[i]=letter[j];
                        letter[j]=s;
                    }
                }
            }
            
            for(int i=1;i<=52;i++) {
                
                double ans=num[i]*1.0/sum;
                System.out.print(letter[i]+":"+num[i]+" ");
                String precent=String.format("%.2f", ans*100);
                System.out.println(precent+" %");
            }
    }
        
    }

    实验二:统计文本中单词出现的次数

    package Harry;
    import java.io.*; 
    
    import java.util.Scanner;
    
    public class danci 
    { 
    private static String str="";
    private static Scanner sc=new Scanner(System.in);
    private static BufferedReader br=null;
    private static String a[]=new String[1000000]; 
    private static String c[]=new String[10000000]; 
    private static int b[]=new int[1000000]; 
    private static int l=0;
    private static int l1=0;
    private static int n=0;
    private static int j=0;
    //private static Boolean false;
    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<n;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("C:\\Users\\Administrator\\Desktop\\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) 
        {
          
          e.printStackTrace();
        }
    }
    
    public static void Writefile() throws IOException
    {
         File file=new File("C:\\Users\\Administrator\\Desktop\\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 main(String[] args) throws IOException 
    {
         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();
                  
             }
    
        }
    }
  • 相关阅读:
    IDEA tomcat 乱码( Catalina log localhost log server )
    idea的maven项目无法加载resources下的配置或是xml文件
    【MyBatis系列10】MyBatis日志如何做到兼容所有常用的日志框架
    【MyBatis系列9】彻底搞懂MyBatis插件原理及PageHelper原理
    【MyBatis系列8】带你彻底掌握MyBatis的缓存工作原理
    【MyBatis系列7】原来SqlSession只是个甩手掌柜,真正干活的却是Executor等四大对象
    idea 热部署Devtools
    git branch 命令查看分支、删除远程分支、本地分支【转】
    【转】elasticsearch 基础知识汇总
    【转】Elasticsearch究竟要设置多少分片数?
  • 原文地址:https://www.cnblogs.com/xjmm/p/11809402.html
Copyright © 2020-2023  润新知