Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从该字符计数器的输出中获取正确的数字_Java_String - Fatal编程技术网

Java 无法从该字符计数器的输出中获取正确的数字

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

当这个程序运行时,字符计数器只捕获文本中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 {

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个字符)。