0

次のコードを使用したJavaのプログラムがあります。

import java.io.*;
public class LineCountingProg
{
   public static void main(String args[])
   {
      FileInputStream fis = null;
      try
      {
         fis = new FileInputStream("d://MyFile.txt");
      }
      catch(FileNotFoundException e)
      {
         System.out.println("The source file does not exist. " +e );
      }          
      LineNumberReader lineCounter = new LineNumberReader(new InputStreamReader(fis));
      String nextLine = null;
      try {
      while ((nextLine = lineCounter.readLine()) != null) {
  System.out.println(nextLine);
  if ((nextLine.startsWith("/*") && nextLine.endsWith("*/"))
            || (nextLine.trim().matches("[{};]+"))) {
          //This line needs to be ignored
          ignoredLines++;
          continue;
                    }
        }
  System.out.println("Total number of line in this file " + lineCounter.getLineNumber());
  int fcounter  = 0;
  fcounter = lineCounter.getLineNumber()-ignoredLines ;
  System.out.println("Total " +fcounter);
  } catch (Exception done) {
  done.printStackTrace();

  }}}

行が/*で始まり、* /で終わる場合に行数を無視できるように、コードを追加したいと思います。また、行に;のみが含まれている場合。および}これらの行も無視する必要があります。どうやってやるの?

4

1 に答える 1

0

whileループの外側では、最初に変数を作成して、無視されたすべての行をカウントする必要があります。

int ignoredLines = 0;

whileループ内に、次の条件を追加できます。

if ((nextLine.startsWith("/*") && nextLine.endsWith("*/"))
    || (nextLine.trim().matches("[};]+"))) {
  //This line needs to be ignored
  ignoredLines++';
  continue;
}

ついに:

System.out.println("Total number of line in this file " + lineCounter.getLineNumber() - ignoredLines);

startsWithendsWithおよびequalsStringクラスにあります。

于 2012-10-27T20:11:36.447 に答える