Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 使用Contains方法过滤输入的多个不同行_Java_Bufferedreader_Contains - Fatal编程技术网

Java 使用Contains方法过滤输入的多个不同行

Java 使用Contains方法过滤输入的多个不同行,java,bufferedreader,contains,Java,Bufferedreader,Contains,我正在使用bufferedreader读取一个txt文件,其中包含数据行。然后,我尝试根据多种条件过滤掉文本文件中的行。在本例中,我想跳过以AA开头的行和以DD开头的行,文本文件如下所示 AA Data1 BB Data2 CC Data3 DD Data4 AA Data5 CC Data6 到目前为止,我的代码识别出我想跳过这两个行,但是,对于从DD到AA的行,它将跳过DD行,但没有识别出我也想跳过下面的AA行。所以我的程序的输出是: BB Data2 CC Data3

我正在使用bufferedreader读取一个txt文件,其中包含数据行。然后,我尝试根据多种条件过滤掉文本文件中的行。在本例中,我想跳过以AA开头的行和以DD开头的行,文本文件如下所示

AA  Data1
BB  Data2
CC  Data3
DD  Data4
AA  Data5
CC  Data6  
到目前为止,我的代码识别出我想跳过这两个行,但是,对于从DD到AA的行,它将跳过DD行,但没有识别出我也想跳过下面的AA行。所以我的程序的输出是:

BB  Data2
CC  Data3
AA  Data5
CC  Data6 
它根据需要去掉第一个AA,但留下第二个AA,因为它去掉了它前面一行中的DD

以下是我目前的代码:

     public static void main(String[] args){

    try {
        BufferedReader br = new BufferedReader(new FileReader("files/txtfile"));
        String line = null;
        String previousLine = null;

        for (line=br.readLine(); line != null;){
            if (previousLine != null) {
                if (line.contains("AA")||line.contains("DD")){
                    previousLine = br.readLine();
                }
                line= br.readLine();
            }
            System.out.println(previousLine);
            previousLine = line;
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}    
任何建议都将不胜感激

试试这个

import java.io.*;
public class tehMain {
    public static void main(String[] args) {
        try( BufferedReader br = new BufferedReader(new FileReader("files/txtfile")) ) {
            for (String line=br.readLine(); line != null; line=br.readLine()) {
                if (line.contains("AA")||line.contains("DD"))
                    continue;
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
试试这个

import java.io.*;
public class tehMain {
    public static void main(String[] args) {
        try( BufferedReader br = new BufferedReader(new FileReader("files/txtfile")) ) {
            for (String line=br.readLine(); line != null; line=br.readLine()) {
                if (line.contains("AA")||line.contains("DD"))
                    continue;
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是你想要的吗

for (line=br.readLine(); line != null; line=br.readLine()) {
    if ( !((line.contains("AA")||line.contains("DD")) ) {
        System.out.println(line)
    }
}

这是你想要的吗

for (line=br.readLine(); line != null; line=br.readLine()) {
    if ( !((line.contains("AA")||line.contains("DD")) ) {
        System.out.println(line)
    }
}
做这个

while((line = br.readLine()) != null) {
  if(!(line.contains("AA") || line.contains("DD"))) {
    System.out.println(line);
  }
}
做这个

while((line = br.readLine()) != null) {
  if(!(line.contains("AA") || line.contains("DD"))) {
    System.out.println(line);
  }
}

想解释一下你的答案吗?这个仍然只捕获要过滤的第一行,但仍然返回第二行。在我描述的文本文件中,它过滤掉了“DD Data 4”,但返回了它下面的“AA Data 5”行。while将继续读取每一行,并将其设置为
line
,直到它达到null。每次读取一行时,它都会检查该行是否不包含AA或DD。如果不包含AA或DD,则打印该行。编辑它以修复一个始终为真的问题。是否要解释您的答案?此选项仍然只捕获要筛选的第一行,但仍然返回第二行。在我描述的文本文件中,它过滤掉了“DD Data 4”,但返回了它下面的“AA Data 5”行。while将继续读取每一行,并将其设置为
line
,直到它达到null。每次读取一行时,它都会检查该行是否不包含AA或DD。如果不包含AA或DD,则打印该行。编辑它以修复一个始终为真的问题。嗯,尝试此操作没有输出,当我停止进程时,它给出了退出代码130Hm,尝试此操作没有输出,当我停止进程时,它给出了退出代码130