未己854 2022-11-05 15:26 采纳率: 75%
浏览 51
已结题

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

img

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2022-11-05 15:38
    关注

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

    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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 修改了问题 11月6日
  • 修改了问题 11月6日
  • 展开全部

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么