我正在尝试创建的程序是一个程序,它从用户定义的文件中获取单词,将这些单词保存为变量,然后在不同的用户定义文件中搜索这些单词,并在那里输出位置。
该程序一直工作到并包括程序获取单词并将它们保存为变量的位置。该程序的问题是搜索方法返回空结果。我的主要怀疑是 search 方法中的代码与 read 方法中的代码不兼容,或者这两种方法没有同时运行。
search 方法在 search 类中, read 方法在 reading 类中。
这是我的代码(包含我所有的 3 个类),请原谅所有的导入。
这是第一堂课:
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Combination{
    public static void main(String[] args) throws FileNotFoundException{
    Scanner userInput = new Scanner(System.in);
    Reading ReadingObject = new Reading();        
    System.out.println("Please enter the file that you wish to open");
    String temp = userInput.nextLine();
    ReadingObject.setFileName(temp);
    ReadingObject.read();
    Scanner searchForWord = new Scanner(System.in);
    Searching SearchingObject = new Searching();
    System.out.println("Please enter the file that you would like to search for these words in");
    String temp1 = searchForWord.nextLine();
    SearchingObject.setFileName(temp1);
    SearchingObject.search();
}    
}
这是第二类:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
class Reading {
private String file;
public void setFileName(String fileName){
    file = fileName;
}
public String getFileName(){
    return file;
}
public void read(){
    try{
        //Choosing the file to open
        FileInputStream fstream = new FileInputStream(getFileName());
        //Get the object of datainputstream
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine = null;
        //Read the file line by line
        while((strLine = br.readLine()) != null){
            //      \\s+ means any number of whitespaces between tokens
            String [] tokens = strLine.split("\\s+");
            String [] words = tokens;
            for(String word : words){
                System.out.print(word);
                System.out.print(" ");
                Searching SearchingObject = new Searching();
                SearchingObject.setWord(word);
            }
            System.out.print("\n");   
        }
        in.close();  
    }
    catch(Exception e){
        System.err.println("Error: " + e.getMessage());  
    }
}
}
这是第三类:
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Searching {
private String file1;
public void setFileName(String fileName){
    file1 = fileName;
}
public String getFileName(){
    return file1;
}
private String word1;
public void setWord(String wordName){
    word1 = wordName;    
}
public String getWord(){
    return word1;
}
public void search() throws FileNotFoundException{
    try{
        //Choosing the file to open
        FileInputStream fstream = new FileInputStream(getFileName());
        //Get the object of datainputstream
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String strLine = null;
        while((strLine = br.readLine()) != null){
            Pattern p = Pattern.compile(getWord());
            Matcher m = p.matcher(strLine);
        int start = 0;
        while (m.find(start)) {
            System.out.printf("Word found: %s at index %d to %d.%n", m.group(), m.start(), m.end());
            start = m.end();
                }
          }        
    }
    catch(Exception e){
        System.err.println("Error: " + e.getMessage());
    } 
}
}
任何帮助将不胜感激。
问候