Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阅读文本文件时如何阅读前两行_Java_File - Fatal编程技术网

Java 阅读文本文件时如何阅读前两行

Java 阅读文本文件时如何阅读前两行,java,file,Java,File,我目前正在开发一个程序,它可以读取文本文件并根据前一行的内容打印不同的行。例如,如果前一行是整数,则我打印当前行的不同变体。如何检查前一行是否为整数,而不同时检查文件中的两行 这是到目前为止的代码 public void workThroughFile(String filename) { try (BufferedReader br = new BufferedReader(new FileReader(filename))) { String line;

我目前正在开发一个程序,它可以读取文本文件并根据前一行的内容打印不同的行。例如,如果前一行是整数,则我打印当前行的不同变体。如何检查前一行是否为整数,而不同时检查文件中的两行

这是到目前为止的代码

 public void workThroughFile(String filename) {
    try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
        String line;
        while ((line = br.readLine()) != null) {
            if (isInteger(line) == false && line.contains("?") == true) {
                System.out.println(line);
            }
            if (isInteger(line) == false && line.contains("?") == false) {
                System.out.println(line);
            }
            if (isInteger(line) == true) {

            }

        }
    }
    catch (Exception e) {
        System.out.println("Did not quite work this time.");
    }
}

你想了解情况。例如,如果要查看最后两行并跟踪它们是否为int,则有4种可能的状态:都不是int,最后一行是int,最后一行是int,或者两者都是int。只需制作一些东西(例如布尔值wasLastLineInt)来跟踪状态,并在读取行时进行更新。布尔人可能是追踪国家最简单的方式

wasLastLineInt = false;
was2ndLastLineInt = false;
while ((line = br.readLine()) != null) {
  if(wasLastLineInt){
     //do something with line if lastline was an int
  }
  else{
    //do something with line if last line wasn't an int
  }
  //whatever other conditions you want

  //prepare for next iteration
  was2ndLastLineInt = wasLastLineInt;//condition of lastline will be condition of 2ndlastline next iteration
  wasLastLineInt = line.matches("^-?\\d+$");//set last line condition for next iteration
}
它使用正则表达式检查字符串是正整数还是负整数。然而,它不会抓住前面有“+”符号的东西


请确保在决定如何处理当前行后更新状态,否则您将根据错误的行做出决定。请记住您希望如何处理前几行,这从第1行和第2行作为非整数的行为开始。

您希望跟踪状态。例如,如果要查看最后两行并跟踪它们是否为int,则有4种可能的状态:都不是int,最后一行是int,最后一行是int,或者两者都是int。只需制作一些东西(例如布尔值wasLastLineInt)来跟踪状态,并在读取行时进行更新。布尔人可能是追踪国家最简单的方式

wasLastLineInt = false;
was2ndLastLineInt = false;
while ((line = br.readLine()) != null) {
  if(wasLastLineInt){
     //do something with line if lastline was an int
  }
  else{
    //do something with line if last line wasn't an int
  }
  //whatever other conditions you want

  //prepare for next iteration
  was2ndLastLineInt = wasLastLineInt;//condition of lastline will be condition of 2ndlastline next iteration
  wasLastLineInt = line.matches("^-?\\d+$");//set last line condition for next iteration
}
它使用正则表达式检查字符串是正整数还是负整数。然而,它不会抓住前面有“+”符号的东西


请确保在决定如何处理当前行后更新状态,否则您将根据错误的行做出决定。请记住您希望如何处理前几行,这从第1行和第2行作为非整数的行为开始。

这里的策略是:

将上一行和当前行都保存在内存中。您可以在处理文件读取的类上声明2个属性

private String prevLine;
private String currLine;
然后逐个读取文件行:

...
String line;
while ((line = br.readLine()) != null) {
    //update line properties
    prevLine = currLine;
    currLine = line;
    if(someConditions(prevLine)){
        handleCurrLine(currLine);
    }
}

这里的战略是:

将上一行和当前行都保存在内存中。您可以在处理文件读取的类上声明2个属性

private String prevLine;
private String currLine;
然后逐个读取文件行:

...
String line;
while ((line = br.readLine()) != null) {
    //update line properties
    prevLine = currLine;
    currLine = line;
    if(someConditions(prevLine)){
        handleCurrLine(currLine);
    }
}

如果你能粘贴到目前为止你已经完成的工作,那就太好了。如果你的程序所做的事情取决于前一行,我想你会发现最简单的管理方法就是在运行时保留前一行。你只是一次读一行,但保持一种“状态”。有很多方法可以在文件中查找,但这样做会更麻烦。顺便说一下,你的问题标题意味着你想看前两行,而不是前一行。因此,你的问题有点让人困惑。如果你能粘贴到目前为止你已经完成的工作,那就太好了。如果你的程序的功能取决于前一行,我想你会发现最简单的管理方法就是在运行时保留前一行。你只是一次读一行,但保持一种“状态”。有很多方法可以在文件中查找,但这样做会更麻烦。顺便说一下,你的问题标题意味着你想看前两行,而不是前一行。所以你的问题有点让人困惑。我明白你的意思,但我不知道如何追踪前一行。你能告诉我怎么做吗?我明白你的意思,但我不知道如何追踪前一行。你能告诉我怎么做吗?