- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在做一个类项目,该项目计算文本文件中的单词、行、字符和段落的总数。到目前为止,就文字而言,它是有效的,但我的字符数似乎减少了 3 个,并且该段落似乎正在计算两个额外的空行,我得到的是 5 个而不是 4 个。
这是我到目前为止所拥有的:
import java.util.*;
import java.io.*;
public class WordStats {
/* getWordCount() method will receive a String parameter
* and return the total number of words by splitting
* the received string into words and increment word count */
public static int getWordCount (String line){
int wordCount = 0;
String str [] = line.split((" "));
for (int i = 0; i <str.length; i ++){
if(str[i].length() > 0 ){
wordCount++;
}
}
return wordCount;
}
/* getParsCount method receives a string parameter
* and returns the total number of paragraphs in
* the text file. */
/*public static int getParsCount(String line){
int parCount=0;
boolean isText = false;
if(!line.isEmpty()){
isText=false;
}
else {
isText=true;
parCount++;
}
return parCount;
}
*/
public static int getParsCount(String line) {
boolean isText=false;
if (!line.isEmpty()) {
if (!isText) {
isText = true;
return 1;
}
}
else {
isText = false;
}
return 0;
}
public static void main(String[] args) {
try{
int chars =0, words = 1, lines =0, pars=0;
// creates new Scanner inFile
Scanner inFile = new Scanner(new File("data.txt"));
//creates file to write updated data file.
PrintWriter outFile = new PrintWriter(new FileOutputStream("dataCopy.txt"));
//Loop that sends string variables to methods so long as there is another
//line break in the file.
while(inFile.hasNextLine()){
String line = inFile.nextLine();// read aline from the input file
lines++; //increment line count
chars += (line.length()); //increment char count
words += getWordCount(line); //Increment word count
pars += getParsCount(line); // increment paragraph count.
outFile.println(line + "\n");
}
System.out.println("The number of Characters in the file are: " + chars);
System.out.println("The number of Words in the file are: " + words);
System.out.println("The number of Lines in the file are: " + lines);
System.out.println("The number of Paragraphs in the file are: " + pars);
inFile.close(); // closes file input.
outFile.close();// closes output file.
System.out.print("File Written");
}
catch(FileNotFoundException e){
System.out.print("ERROR: CANNOT PROCESS FILE");
}
}
}
这是输入文件:
Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in
Liberty, and dedicated to the proposition that all men are created equal.
Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so
dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a
portion of that field, as a final resting place for those who here gave their lives that that nation might
live. It is altogether fitting and proper that we should do this.
But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground.
The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add
or detract. The world will little note, nor long remember what we say here, but it can never forget
what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which
they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great
task remaining before us -- that from these honored dead we take increased devotion to that cause for which
they gave the last full measure of devotion -- that we here highly resolve that these dead shall not have
died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of
the people, by the people, for the people, shall not perish from the earth.
Abraham Lincoln
November 19, 1863
输出是这样的:
The number of Characters in the file are: 1495
The number of Words in the file are: 283
The number of Lines in the file are: 22
The number of Paragraphs in the file are: 5
最佳答案
您可以对代码进行以下更改,以使其能够正确计算输入文件中的段落数或连续文本 block 的数量。我创建了一个 boolean
标志,如果当前行有内容,则该标志设置为 true
;如果当前行有内容,则设置为 false
。那么,如果两个段落之间有多个空行,则多个空行只算一次。此外,输入文件末尾的额外空行将被忽略。
public class WordStats2 {
boolean isText = false;
public static int getParsCount(String line) {
if (!line.trim().isEmpty()) {
if (!isText) {
isText = true;
return 1;
}
}
else {
isText = false;
}
return 0;
}
}
由于您从未向我们展示过您的输入,因此我们只能推测为什么字符数也减少了。一种可能性是文件末尾的额外空行又是罪魁祸首。这些“空”行并不是空的,而是实际上包含一个或多个行尾字符(Windows 中为 \r\n
,Linux 中为 \n
)。所以你的程序可能正在计算这些字符。发表您的意见,我可以修改我的答案。
关于java - WordCount 项目缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928789/
我的 slideToggle 在幻灯片切换的底部有点跳动。会不会是因为那里有一个按钮之类的。任何使它更平滑的方法。尝试使用缓动但不是很成功。有什么建议 点击视频设置自己看看 The site $(do
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
概述: 我的 B 对象是一个 100 000 * 5000 的 2 GB 大矩阵 我的 A 对象较小 1000 * 5000 analyse_with_glm <- function(Y) { c
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
我在从 SQL Server (2008R2) 数据库中的 NVARCHAR 字段检索加密数据时遇到了问题,对于某些记录,我的 C# .NET 应用程序中数据的字符串值与数据库记录中的数据字符串值不同
我从 main.cpp 中包含两个头文件,它们在匿名命名空间中具有以下定义:const string strToken = ("%");使用 g++ 4.9 版编译结果如下: In file incl
我正在测试的代码中出现信任边界冲突。该代码在 session 中添加表单,并且由于违反信任边界而存在缺陷 Inside Struts Action class execute method { Ed
这个问题没有与之相关的实际问题,它更多的是一个好奇的问题,想知道我是否过于字面意思;)。 所以我一直在努力尽可能多地理解 c++ 标准。今天,在深入研究标准时,我注意到了这一点 (ISO/IEC 14
在我的数据库中,我必须做一个Circular Reference(cycle)来获取我想要的数据,我不知道如何重新排序表来获取我想要的数据而不需要循环. 这是我的数据库的模式(或模型)——只有表名是英
我有一个代表一组数字的类。构造函数接受三个参数: startValue 、 endValue 和 stepSize 。 该类负责保存一个列表,其中包含考虑 stepSize 的开始值和结束值之间的所有
如何删除下图中标记的三个间隙? 此代码可在 http://jsfiddle.net/69zj6smo/ 获得- 调整渲染区域的大小以查看通常存在的一些线条。 让我感到困惑的是,我认为我总是创建这样的流
double 的位格式在第一位存储符号。 double的C#哈希算法是高低32位二进制异或。 因此,当您对 double A 及其负数 -A 进行哈希处理时,哈希值的唯一区别在于第一位。 要散列多个字
当我在 Action 中使用重定向时,afterAction 方法(在 controller.php 中)不起作用!我该如何解决这个问题? 注意:我不能使用 beforeAction 因为我在我的 A
毫无疑问,还有其他可能更好的方法可以做到这一点,但我正在努力了解这里发生了什么。 在下面的示例中,coverity 在第四行报告了 FORWARD_NULL 缺陷。 double? foo = nul
我们希望针对 Jenkins 中失败的构建自动在 Jira 中创建缺陷。如果您成功完成了此操作,可以与我分享吗? 最佳答案 您应该能够使用JIRA plugin来做到这一点,以及“JIRA:创建问题”
有人能解释一下为什么 VeraCode 似乎认为使用 name 作为公共(public)属性(property)是一个坏主意,并提出了一个好的缓解措施吗? 代码(JavaScript): var Ba
我认为这是 C++11 标准中的一个(次要)缺陷。在 [dcl.dcl] 中我们有: simple-declaration: decl-specifier-seqopt init-
我做了以下... private static IDbConnectionProvider CreateSqlConnectionProvider(DbConfig dbConfig) { r
我现在在运行我的 cakephp 应用程序时遇到了很多麻烦。 在将 vom lenny 升级为 squeeze(甚至尝试完全重新安装 sqeeze)之后,imagick 的速度非常慢,以至于它只是关闭
我收到来自 Veracode 的信任边界违规。我的代码是 userName= req.getParameter(Constant.USERNAME); session.setAttribute(Con
我是一名优秀的程序员,十分优秀!