计算这篇短文的字符数(含空白)共有多少?若不含空白,这篇短文共有多少个字符?
根据给定文件的信息,我们可以总结出以下几个相关的知识点: ### 1. 文件读取与处理 在Java中,`BufferedReader` 类是用于读取字符文件的便捷类,它支持特定的读取方法,如 `readLine()` 方法可以按行读取文本文件。此方法非常适合于读取大量文本数据,尤其是当需要逐行处理文件内容时。 #### 代码示例 ```java BufferedReader in = new BufferedReader(new FileReader("Early-Precaution.txt")); String x = in.readLine(); ``` 这段代码首先创建了一个 `BufferedReader` 对象,并将其指向名为 "Early-Precaution.txt" 的文件。然后使用 `readLine()` 方法读取文件的第一行内容。如果文件末尾,则返回 `null`。 ### 2. 字符串处理 #### 计算含空白的字符数 计算含有空白的字符总数相对简单,只需要遍历整个文件内容即可。 ```java int totalCharsWithSpaces = 0; // 假设 s 是存储所有内容的字符串 for (int i = 0; i < s.length(); i++) { totalCharsWithSpaces++; } ``` #### 计算不含空白的字符数 为了排除空白字符(包括空格、制表符等),我们需要在遍历过程中检查每个字符。 ```java int totalCharsWithoutSpaces = 0; for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (!Character.isWhitespace(ch)) { // 判断是否为空白字符 totalCharsWithoutSpaces++; } } ``` ### 3. 统计单词数 统计单词数量通常涉及到对字符串进行分割,这可以通过 `split()` 方法实现,该方法可以根据指定的分隔符将字符串拆分为多个子字符串。 ```java String[] words = s.split("\\s+"); // 使用正则表达式匹配一个或多个空白字符 int wordCount = words.length; ``` 这里使用了正则表达式 `\\s+` 来匹配一个或多个空白字符,从而确保能够正确地分割出所有的单词。 ### 4. 代码优化建议 #### 命令行参数接收 为了使得程序能够从命令行接收文件名作为输入,可以使用 `args[0]` 获取第一个命令行参数。 ```java String fileName = args[0]; // 假设第一个命令行参数为文件名 BufferedReader in = new BufferedReader(new FileReader(fileName)); ``` #### 代码可读性改进 原代码中的变量命名较为混乱且缺乏注释,建议改善代码风格以提高可读性。 ```java int totalCharacters = 0; int letterCount = 0; int spaceCount = 0; int sentenceCount = 0; String content = in.readLine(); for (int i = 0; i < content.length(); i++) { char currentChar = content.charAt(i); if (currentChar != ' ') { totalCharacters++; } if (currentChar == ' ' || currentChar == '\n') { if (i != 0 && content.charAt(i - 1) != ' ') { letterCount++; } } if (currentChar == '?' || currentChar == '!' || currentChar == '.') { sentenceCount++; } if (currentChar == ' ') { spaceCount++; } } ``` 以上就是从给定文件的信息中提炼出的相关知识点,涵盖了文件读取、字符串处理以及统计单词数等内容。通过这些知识点的学习,我们不仅能够理解原代码的功能,还能进一步优化和扩展程序的功能。
import java.io.*;
public class readtxt {
static String s;
/* 方法find查找字符串in中A的个数 */
public static void main(String[] args) {
try{
int char1=0,letter=0,sentence=0,space=0;
BufferedReader in=new BufferedReader (new FileReader("Early-Precaution.txt"));
String x=in.readLine();
for(int i=0;i<x.length();i++)
{
char ch = x.charAt(i);
if(ch!=' ')
{
char1++;
}
if(ch==' '||ch=='\n')
{ //有空格,加一单词
if(i!=0&&x.charAt(i-1)!=' ')
letter++;
}
if(ch=='?'||ch=='!'||ch=='.')
{
sentence++;
}
if(ch==' ')
{
space++;
}
- 粉丝: 3
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Firebase的智能家庭管理系统NodeSmartHome.zip
- (源码)基于C++的East Zone DSTADSO Robotics Challenge 2019机器人控制系统.zip
- (源码)基于Arduino平台的焊接站控制系统.zip
- (源码)基于ESPboy系统的TZXDuino WiFi项目.zip
- (源码)基于Java的剧场账单管理系统.zip
- (源码)基于Java Swing的船只资料管理系统.zip
- (源码)基于Python框架的模拟购物系统.zip
- (源码)基于C++的图书管理系统.zip
- (源码)基于Arduino的简易温度显示系统.zip
- (源码)基于Arduino的智能电动轮椅系统.zip