文件IO的问题

时间:2016-06-05 02:22:21

标签: java file-io

我必须在java中编写一个程序来读取文件,搜索单词" haystack"和"针"在每一行中,吐出单词" needle"的位置。如果这个词" haystack"在"针"之前是2行。到目前为止,我的程序将读取文件并将吐出2个单词的位置,如果它们在行中,但我无法弄清楚如何让它吐出"针&#的位置34;如果" haystack"之前是2行。此外,如果其中一个单词不在该行中,则它会吐出-1作为位置。有人可以帮忙吗? (请记住,我是一名初学程序员,并不是很擅长)。

这是我的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.swing.JFileChooser;
import javax.swing.text.html.HTMLDocument.Iterator;

public class NeedleInHaystack{

public static void main(String[] args){
    JFileChooser jfc = new JFileChooser();
    int action = jfc.showOpenDialog(null);
    if (action != JFileChooser.APPROVE_OPTION){
        System.out.println("Ok, if you don't want to play");;
        System.exit(3);
    }
    String fs = jfc.getSelectedFile().getAbsolutePath();
    System.out.println("User selected: " + fs);
    String fo = fs + "output.txt";
    System.out.println("output: " + fo);

    try {
        FileReader fr = new FileReader(fs);
        BufferedReader br = new BufferedReader(fr);
        FileWriter fw = new FileWriter(fo);
        PrintWriter pw = new PrintWriter(fw);
        while (true) {
            String l = br.readLine();
            if (l == null) {
                System.out.println("Looks like we are at the end of the line");
                break;}






            System.out.println("Input: " + l);
            int firstNeedle;
            int firstHaystack;
            firstNeedle = l.indexOf("needle");
            System.out.println("Found needle at:" + firstNeedle);

            firstHaystack = l.lastIndexOf("haystack");
            //String name = l.substring(0, firstNeedle);
            System.out.println("found haystack at: " + firstHaystack);              

            //pw.println(l);
        }
        br.close();
        pw.close();

        System.out.println("That's all, folks!");





    }catch(Exception e){
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

首先你需要一个counter,它将在while循环中递增,一个整数变量在循环之外声明,它将存储找到“haystack”的行号。

现在如果在“needle”之前找到“haystack”2行,你将获得“haystack”的行号,你可以将该行号与counter进行比较。