【java作业一】统计英文文章的段落、句子、字符数

简介: 一、运行效果

一、运行效果

image.png

二、思路

  1. 准备好一个存放英文文章的.txt文件。
  2. 逐行读取文件。
  1. 统计数量:
  1. 句子数:以.!,或?结尾。
  2. 段落数:不是空行,那么就是一个段落。
  3. 单词数:统计空格数(连续的空格只算一个),单词数等于空格数加一。

感觉try-catch错误捕捉好麻烦,代码看起来比较乱,但是不try它又不让我跑。

三、实现

文件目录结构

- Main.java
- t.txt

代码

import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.Scanner;
import java.io.IOException;
public class Main{
    public static void main(String[] args){
        int jz = 0;  // 句子数
        int dl = 0;  // 段落数
        int dc = 0;  // 单词数
        try{
            Scanner in = new Scanner(Path.of("t.txt"), StandardCharsets.UTF_8);
      // 逐行读取文件
            for (int i = 0; i < 1234567890; i ++) {
                try {
                    String s = in.nextLine();
                    // 1. 段落 --> 不是空行
                    if (s.length() > 0) {
                        dl++;
                        dc++;
                    }
          // 遍历一行
                    // 2. 句子 --> 句点,问号,感叹号的数量
                    // 3. 单词 --> 前有单词的空格数 + 1 (排除连续的空格)
                    for (int j = 0; j < s.length(); j++) {
                        char c = s.charAt(j);
                        if (c == '.' || c == '?' || c == '!') {
                            jz++;
                        }
                        if (c == ' ') {
                            char c_2 = s.charAt(j - 1);
                            if (c_2 != ' ') {
                                dc++;
                            }
                        }
                    }
                } catch(Exception e) {
                    System.out.println("文件读完了");
                }
            }
        } catch (IOException e) {
            System.err.println("Failed to open file: " + e.getMessage());
        }
        System.out.println("单词数:" + dc);
        System.out.println("句子数:" + jz);
        System.out.println("段落数:" + dl);
    }
}

四、附录:一段英文

“Get more done by doing this!” “Do this and be more productive!” These are common headlines in the productivity space.
As a contrarian, I usually feel like I need to do the opposite when I see everyone doing something. Now, that’s not always a smart thing to do.
But when it comes to career, business, and productivity, it usually pays off if you do what’s counterintuitive.

相关文章
|
3月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
81 5
|
3月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
183 3
|
3月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
92 1
|
3月前
|
Java
Java基础学习day05-作业
本文为Java基础学习第五天作业,通过五个案例练习类与对象的定义、构造方法、set/get方法及成员方法的应用。涵盖女友、学生、教师、手机和电影等类的设计与测试,强化面向对象编程基础。
90 2
|
3月前
|
Java
Java基础学习day04-作业
本作业包含8个Java编程案例,涵盖数组的定义与遍历、求和、最值计算、去极值求平均、元素倍增、二维数组行和计算及查找指定元素等内容,旨在巩固Java基础语法与数组操作技能。
248 1
|
3月前
|
算法 Java
Java基础学习day03-作业
本内容包含多个Java编程案例,涵盖条件判断、循环、数组、随机数生成、素数判断等基础算法练习,适用于巩固Java语法与逻辑思维训练。
141 6
|
3月前
|
Java
Java基础学习day02-作业
本内容包含13个Java编程练习需求,涵盖变量定义、数据类型转换、运算符使用、键盘输入及条件判断等基础语法实践,适合初学者巩固Java核心基础知识。
106 5
|
Java
Java基础学习day01-作业
通过多个Java编程案例,学习变量定义、数据类型使用及控制台输出。涵盖字符串、数值、布尔值等字面量输出,变量赋值与修改,以及实际应用场景如学生信息和商品价格变化的模拟,夯实基础语法掌握。
132 0
|
6月前
|
机器学习/深度学习 存储 算法
Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)
本文围绕 Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用展开,剖析作业现状与挑战,阐述技术原理及应用方法,结合案例与代码,给出具有实操性的解决方案。
Java 大视界 -- Java 大数据在智能农业无人机植保作业路径规划与药效评估中的应用(165)
|
7月前
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
701 0