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

Java 正在更正输入文件以读取每一行,java,file,parsing,input,Java,File,Parsing,Input,我目前正在编写一个递归下降解析器。代码的目标是判断该语言中是否有字符串。我需要读取具有多个字符串的文件(每行一个字符串)。目前,它只适用于文件中的第一个字符串,然后写入控制台。。我有一个问题,正确执行这一点,并使它读取每一行,而不是第一行。谢谢你的帮助。(可能有不同的方法来实现这一点,比如重写大量代码以使其更充分……但我现在只是在寻找“简单”的解决方案) 问题所在代码的顶部部分: import java.io.BufferedReader; import java.io.FileReader;

我目前正在编写一个递归下降解析器。代码的目标是判断该语言中是否有字符串。我需要读取具有多个字符串的文件(每行一个字符串)。目前,它只适用于文件中的第一个字符串,然后写入控制台。。我有一个问题,正确执行这一点,并使它读取每一行,而不是第一行。谢谢你的帮助。(可能有不同的方法来实现这一点,比如重写大量代码以使其更充分……但我现在只是在寻找“简单”的解决方案)

问题所在代码的顶部部分:

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;
   }
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
公共班机
{
静态int-ptr;
静态字符[]输入;
公共静态void main(字符串[]args)
{
字符串str=“”;
BufferedReader br=null;
FileReader fr=null;
试一试{
fr=新文件读取器(“input.txt”);
br=新的缓冲读取器(fr);
br=新的BufferedReader(新的文件读取器(“input.txt”);
str=br.readLine();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
输入=str.toCharArray();
如果(输入长度<2)
{
System.out.println(“字符串''+str+''不在语言中。”);
系统出口(0);
}
ptr=0;
布尔值isValid=E();
if((isValid)和(ptr==input.length))
{
System.out.println(“字符串''+str+''在语言中。”);
}
其他的
{
System.out.println(“字符串''+str+''不在语言中。”);
}
}
静态布尔E()
{
int fallback=ptr;
如果(输入[ptr++]!=“|”)
{
ptr=回退;
返回false;
}
如果(P()==false)
{
ptr=回退;
返回false;
}
如果(O()==false)
{
ptr=回退;
返回false;
}
返回true;
}

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

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

//在这里编写其余代码,将其转换为字符数组并打印到控制台


}

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

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

//在这里编写其余代码,将其转换为字符数组并打印到控制台


}

如果您可以使用java8,那么为什么不使用JavaNIO来读取所有行?

如果您可以使用java8,那么为什么不使用JavaNIO来读取所有行?

@Ryanrrjk谢谢!希望有帮助。@Ryanrrjk谢谢!希望有帮助。