我读取一个txt文档,并统计其中共有多少行(Line_no)、单词(Word Count)和字符(Character Count)
但是结果输出的时候,读不到最后一行,求解
程序如下:
import java.util.Scanner;
import java.io.*;
public class ScannerFile
{    public static void main(String argv[]) throws IOException
    {
     Scanner input=new Scanner(new File("D:\\ScannerFile.txt"));
     int line_no,word_no,ch_no;
     line_no=word_no=ch_no=0;
     String str=input.nextLine();
     while(input.hasNext())
     {
     line_no++;
     System.out.println(line_no+";"+str);
     for(int i=0;i<str.length();i++)
     {
     if(str.charAt(i)==' ')
     word_no++;
     ch_no++;
     }
     str=input.nextLine();
     }
     System.out.println("Line No="+line_no);
     System.out.println("Word Count="+word_no);
     System.out.println("Character Count="+ch_no);
    }
}

解决方案 »

  1.   

    换成do while循环,最后一次nextLine执行后,本来读到数据了,但是用hasNext判断成false了,导致最后一行没被统计进去,方法就是把str=input.nextLine();放在循环的最前面,循环之前就不要读了
      

  2.   

    想要相关语言的所有资料吗?那就快来吧。
    我的压缩包里面不止一两样东西哦,那可是我当初学习的所有资料。
    http://download.csdn.net/user/yangtonghai
      

  3.   

    while(input.hasNext())
      {
      line_no++;
      System.out.println(line_no+";"+str);
      for(int i=0;i<str.length();i++)
      {
      if(str.charAt(i)==' ')
      word_no++;
      ch_no++;
      }
      str=input.nextLine();
      }
    你看看这个?
    有没有问题呢?
    逻辑就不对吧。
      

  4.   

    我说的是这样
    import java.util.Scanner;
    import java.io.*;
    public class ScannerFile
    {   public static void main(String argv[]) throws IOException
       {
       Scanner input=new Scanner(new File("ScannerFile.txt"));
       int line_no,word_no,ch_no;
       line_no=word_no=ch_no=0;    
       while(input.hasNext())
       {
     String str=input.nextLine();
       line_no++;
       System.out.println(line_no+";"+str);
       for(int i=0;i<str.length();i++)
       {
       if(str.charAt(i)==' ')
       word_no++;
       ch_no++;
       }
       }
       System.out.println("Line No="+line_no);
       System.out.println("Word Count="+word_no);
       System.out.println("Character Count="+ch_no);
       }
    }
      

  5.   

    可以了,但是问题是这个String str=input.nextLine(); 读的是哪行?
      

  6.   

    程序我已经修改好了,最后还要在循环开始时对(word_no)+1
      

  7.   

    正确程序如下:import java.util.Scanner;
    import java.io.*;
    public class test
    {   public static void main(String argv[]) throws IOException
       {
       Scanner input=new Scanner(new File("D:\\ScannerFile.txt"));
       int line_no,word_no,ch_no;
       line_no=word_no=ch_no=0;
      while(input.hasNext())
       {
        word_no++;
     String str=input.nextLine();
       line_no++;
       System.out.println(line_no+";"+str);
       for(int i=0;i<str.length();i++)
       {
       if(str.charAt(i)==' ')
       word_no++;
       ch_no++;
       }
       }
       System.out.println("Line No="+line_no);
       System.out.println("Word Count="+word_no);
       System.out.println("Character Count="+ch_no);
       }
    }
      

  8.   

    应该这样写:
      String str="";
      while(input.hasNext())
      {
      str=input.nextLine();
      line_no++;
      System.out.println(line_no+";"+str);
      for(int i=0;i<str.length();i++)
      {
      if(str.charAt(i)==' ')
      word_no++;
      ch_no++;
      }
      
      }