更正输入文件以读取每一行

时间:2017-06-26 21:28:58

标签: java file parsing input

我目前正在编写一个递归下降解析器。代码目标是告诉字符串是否在语言中。我需要读取一个包含多个字符串的文件(每行一个字符串)。目前它只适用于文件中的第一个字符串,然后写入控制台..我遇到了正确执行此问题,并使其读取EACH行而不是第一个的问题。任何帮助赞赏。 (可能有不同的方法来处理这个问题,比如重写很多代码就足够了......但我现在只是寻找简单的解决方案)

问题所在代码的顶部:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main
{
   static int ptr;
   static char[] input;
   public static void main(String[] args)
   {
       String str="";
       BufferedReader br = null;
       FileReader fr = null;
       try {

           fr = new FileReader("input.txt");
           br = new BufferedReader(fr);
           br = new BufferedReader(new FileReader("input.txt"));
           str = br.readLine(); 
          }
       catch (IOException e)
       {
           e.printStackTrace();
       }
       input = str.toCharArray();
       if(input.length < 2)
       {
           System.out.println("The string '"+str+"' is not in the language.");
           System.exit(0);
       }
       ptr = 0;
       boolean isValid = E();
       if((isValid) & (ptr == input.length))
       {
           System.out.println("The string '"+str+"' is in the language.");
       }
       else
       {
           System.out.println("The string '"+str+"' is not in the language.");
       }
   }

   static boolean E()
   {
       int fallback = ptr;
       if(input[ptr++] != '|')
       {
           ptr = fallback;
           return false;
       }
       if(P() == false)
       {
           ptr = fallback;
           return false;
       }
       if(O() == false)
       {
           ptr = fallback;
           return false;
       }

       return true;
   }

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您应该如下所示读取循环中的行,然后在控制台中打印。

while((str = br.readLine())!= null){

//在此处编写其余代码以将其转换为char数组并将其打印到控制台

}