Java 无法从该字符计数器的输出中获取正确的数字
当这个程序运行时,字符计数器只捕获文本中1498个字符中的1225个,这里的任何帮助或指导都会很有帮助,谢谢Java 无法从该字符计数器的输出中获取正确的数字,java,string,Java,String,当这个程序运行时,字符计数器只捕获文本中1498个字符中的1225个,这里的任何帮助或指导都会很有帮助,谢谢 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.PrintWriter; import java.util.Scanner; public class WordStats
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;
public class WordStats {
public static void main(String[] args) {
String input;
Scanner kbd = new Scanner(System.in);
System.out.print("Enter the name of the input file: ");
input = kbd.nextLine();
try
{
// Set up connection to the input file
Scanner input1 = new Scanner(new FileReader(input));
// Set up connection to an output file
PrintWriter output = new PrintWriter(new FileOutputStream(input + ".txt"));
// initialize the counter for the line numbers
int lineNum = 0;
int words = 0;
int characters = 0;
int paragraphs = 0;
// as long as there are more lines left in the input file
// read from the input file, and copy to the output file
while (input1.hasNextLine())
{
// read a line from the input file
String line;
line = input1.nextLine();
// copy the line to the output file, adding a
// line number at the front of the line
output.println(line + "\n");
// increment the line counter
lineNum++;
//Section for counting the words
boolean word = false;
for (int i = 0; i < line.length(); i++) {
//checks for letters and counts as word till it finds a space then checks for a letter again.
if (!Character.isWhitespace(line.charAt(i)) && !word) {
words++;
word = true;
}
else if (Character.isWhitespace(line.charAt(i)) && word){
word = false;
}
}
for (int i = 0; i < line.length(); i++) {
if(!Character.isWhitespace(line.charAt(i))){
characters++;
}
}
}
// close the files
input1.close();
output.close();
System.out.println("Lines: " + lineNum);
System.out.println("Words: " + words);
System.out.println("Characters: " + characters);
}
catch(FileNotFoundException e)
{
System.out.println("There was an error opening one of the files.");
}
}
import java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.FileReader;
导入java.io.PrintWriter;
导入java.util.Scanner;
公共类WordStats{
公共静态void main(字符串[]args){
字符串输入;
扫描仪kbd=新扫描仪(System.in);
System.out.print(“输入输入文件名:”);
输入=kbd.nextLine();
尝试
{
//设置与输入文件的连接
Scanner input1=新扫描仪(新文件读取器(输入));
//设置与输出文件的连接
PrintWriter输出=新的PrintWriter(新文件输出流(输入+“.txt”);
//初始化行号的计数器
int lineNum=0;
int字=0;
整数字符=0;
int=0;
//只要输入文件中还有更多的行
//从输入文件读取,然后复制到输出文件
while(input1.hasNextLine())
{
//从输入文件中读取一行
弦线;
line=input1.nextLine();
//将该行复制到输出文件,添加
//线路前端的线路编号
output.println(第+行“\n”);
//增加行计数器
lineNum++;
//计算字数的部分
布尔字=假;
对于(int i=0;i
}
下面是它使用的示例文本:
八十七年前,我们的父辈在这一点上产生了
非洲大陆,一个新的国家,孕育于自由之中,致力于祖国
人人生而平等的主张
现在,我们正在进行一场伟大的内战,以检验这一点
国家,或任何一个如此孕育和奉献的国家,都可以长久存在。
我们在那场战争的一个伟大战场上相遇。我们已经到了
奉献出那块土地的一部分,作为那些人的最后安息之地
为了这个国家的生存,他们在这里献出了自己的生命。它是
我们这样做是完全恰当的
但是,在更大的意义上,我们不能奉献——我们不能奉献
--我们不能把这片土地神化。曾经在这里战斗过的勇士们,无论是活着的还是死去的,都把这里神圣化了,这远远超出了我们可怜的能力
增减。世界不会注意到,也不会长久记住我们所做的
在这里说,但它永远不会忘记他们在这里做了什么。这是给我们的
活着,更确切地说,是为了献身于他们所做的未完成的工作
到目前为止,在这里战斗的人都是如此高尚地前进。这对我们来说相当重要
在这里致力于摆在我们面前的伟大任务
从这些光荣的死者身上,我们为这项事业付出了更多的努力
这是他们最后一次全身心地投入——我们在这里
下定决心让这些死者不会白白死去
这个国家,在上帝的保佑下,将迎来自由的新生
民有、民治、民享的政府
从地球上消失
亚伯拉罕·林肯1863年11月19日
我假设差异是您不计算的空白字符数。对不起,该文本中只有1225个非空白字符。如果包含空格但不包含换行符,则有1504个字符。“我不知道你是从哪里得到1498的。@安德烈,如果我不得不猜测的话,我会说原文中只有两行换行符,一行在每段之间,一行在最后一段和作者行之间。这就解释了1504和1498之间6的差异。@huck_cussler我也有同样的想法,但1504已经没有换行符了,所以计算换行符也会产生1510个字符(或者在Windows上是1516个字符)。