title: Made a wc program in Java, but it will not count end of line character
body: <p>So I have pretty much completed (I think) my wc program in Java, that takes a filename from a user input (even multiple), and counts the lines, words, bytes (number of characters) from the file. There were 2 files provided for testing purposes, and they are in a .dat format, being readable from dos/linux command lines. Everything is working properly except for the count when there are \n or \r\n characters at the end of line. It will not count these. Please help?</p>
  
  <pre><code>import java.io.*;
  import java.util.regex.Pattern;
  
  public class Prog03 {
  
  
  private static int totalWords = 0, currentWords = 0;
  private static int totalLines =0, currentLines = 0;
  private static int totalBytes = 0, currentBytes = 0;
  
  public static void main(String[] args) {
  
  
      System.out.println("This program determines the quantity of lines,                                    words, and bytes\n" +
  "in a file or files that you specify.\n" +
  "\nPlease enter one or more file names, comma-separated: ");
  
          getFileName();
  
           System.out.println();
  
  } // End of main method.
  
  
  public static void countSingle (String fileName, BufferedReader in) {
  
      try {
  
          String line;
  
          String[] words;
  
          //int totalWords = 0;
  
          int totalWords1 = 0;
  
          int lines = 0;
  
          int chars = 0;
  
          while ((line = in.readLine()) != null) {
  
              lines++;
              currentLines = lines;
  
              chars += line.length();
              currentBytes = chars;
  
              words = line.split(" ");
  
              totalWords1 += countWords(line);
              currentWords = totalWords1;
  
          } // End of while loop.
  
          System.out.println(currentLines + "\t\t" + currentWords + "\t\t" +     currentBytes + "\t\t"
                  + fileName);
  
      } catch (Exception ex) {
  
          ex.printStackTrace();
  
      }
  }
  
  public static void countMultiple(String fileName, BufferedReader in) {
  
      try {
  
          String line;
  
          String[] words;
  
          int totalWords1 = 0;
  
          int lines = 0;
  
          int chars = 0;
  
          while ((line = in.readLine()) != null) {
  
              lines++;
              currentLines = lines;
  
              chars += line.length();
              currentBytes = chars;
  
              words = line.split(" ");
  
              totalWords1 += countWords(line);
              currentWords = totalWords1;
  
  
          } // End of while loop.
          totalLines += currentLines;            
          totalBytes += currentBytes;
          totalWords += totalWords1;
  
      } catch (Exception ex) {
  
          ex.printStackTrace();
  
      }
  
  } // End of method count().
  
  private static long countWords(String line) {
  
      long numWords = 0;
  
      int index = 0;
  
      boolean prevWhitespace = true;
  
      while (index &lt; line.length()) {
  
          char c = line.charAt(index++);                
  
          boolean currWhitespace = Character.isWhitespace(c);
  
          if (prevWhitespace &amp;&amp; !currWhitespace) {
  
              numWords++;
  
          }
  
          prevWhitespace = currWhitespace;
  
      }
  
      return numWords;
  
  } // End of method countWords().
  
  private static void getFileName() {        
  
      BufferedReader in ;        
  
        try {
  
      in = new BufferedReader(new InputStreamReader(System.in));
  
          String fileName = in.readLine();
  
          String [] files = fileName.split(", ");
  
            System.out.println("Lines\t\tWords\t\tBytes" + 
                  "\n--------\t--------\t--------");
  
          for (int i = 0; i &lt; files.length; i++) {
          FileReader fileReader = new FileReader(files[i]);
  
          in = new BufferedReader(fileReader);
  
          if (files.length == 1) {
              countSingle(files[0], in);
              in.close();
          }
          else {
          countMultiple(files[i], in);  
              System.out.println(currentLines + "\t\t" + 
                      currentWords + "\t\t" + currentBytes + "\t\t"
                  + files[i]);
          in.close();
          }
          }    
          if (files.length &gt; 1) {
            System.out.println("----------------------------------------" + 
                  "\n" + totalLines + "\t\t" + totalWords + "\t\t" +     totalBytes + "\t\tTotals");
          }
        }
  
        catch (FileNotFoundException ioe) {
          System.out.println("The specified file was not found. Please recheck   "
                  + "the spelling and try again.");
  
          ioe.printStackTrace();
  
      } 
  
         catch (IOException ioe) {
  
                  ioe.printStackTrace();
  
              }
  
  
  }
  } // End of class
  </code></pre>
  
  <p>that is the entire program, if anyone helping should need to see anything, however this is where I count the length of each string in a line (and I assumed that the eol characters would be part of this count, but they aren't.)</p>
  
  <pre><code>  public static void countMultiple(String fileName, BufferedReader in) {
  
      try {
  
          String line;
  
          String[] words;
  
          int totalWords1 = 0;
  
          int lines = 0;
  
          int chars = 0;
  
          while ((line = in.readLine()) != null) {
  
              lines++;
              currentLines = lines;
  
              **chars += line.length();**
              currentBytes = chars;
  
              words = line.split(" ");
  
              totalWords1 += countWords(line);
              currentWords = totalWords1;
  
  
          } // End of while loop.
          totalLines += currentLines;            
          totalBytes += currentBytes;
          totalWords += totalWords1;
  
      } catch (Exception ex) {
  
          ex.printStackTrace();
  
      }
  
  }
  </code></pre>