java按照特殊字符计数增长的顺序选择句子。

img

我大概只能写到这里,要求是英语文本文档,判断特殊字符,并按特殊字符的个数递增排列句子
特殊字符是指非字、非数字和非空格字符。
以".""?""!"这些结尾的是一句话
然后特殊字符个数相同的按原来的文本顺序排列

特殊字符指你封装的方法?

import java.io.*;
public class FileTest {
    public static void main(String[] args) {
        //读取文件内容
        String path = "E:\\txt.txt";
        File file = new File(path);
        if (!file.exists()){
            System.out.println("文件不存在!");
            return;
        }
        InputStreamReader read = null;
        BufferedReader bufferedReader=null;
        StringBuffer sb=null;
        try {
            read = new InputStreamReader(new FileInputStream(file));
            bufferedReader = new BufferedReader(read);
            String lineText = null;
            sb=new StringBuffer();
            while((lineText = bufferedReader.readLine())!=null){
                sb.append(lineText);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //分割每句话
        String[] strs = sb.toString().split("\\.|\\!|\\?");
        sortTxt(strs);
        System.out.println("排序后的结果:");
        for (String s:strs){
            System.out.println(s);
        }
    }

    public static void sortTxt(String [] arr){
        for(int i=1;i<arr.length;i++)
        {
            for(int j=0;j<arr.length-i;j++)
            {
                if(getSpecialNum(arr[j])>getSpecialNum(arr[j+1]))
                {
                    String temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }

    public static int getSpecialNum(String str){
        int num=0;
        char[] chars = str.toCharArray();
        for(char c : chars){
            if ((c>='0' && c<='9') || (c>='a' && c<='z') || (c>='A' && c<='Z') || c==' '){

            }else{
                num++;
            }
        }
        return num;
    }
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632