while循环需要继续

时间:2017-04-17 19:11:03

标签: java while-loop

我有这段代码

static String sCurrentLine = null;

 /* keyword */
static String keyword = null;

 Scanner keywordFile = null, siteFile = null;
           try {
             keywordFile = new Scanner(new File("/home/mearts/keywords.txt"));
             siteFile = new Scanner(new FileReader(fileChooser.getSelectedFile()));
             sCurrentLine = siteFile.nextLine().trim();
             keyword = keywordFile.nextLine().trim();

               while (sCurrentLine != null){
                 while (keywordFile.hasNext() || keyword == null) {
                 System.out.println("Line--> " + keyword);
                 System.out.println("Current here >>" + sCurrentLine);
                   if (sCurrentLine.contains(keyword)) {
                       System.out.println("Found it-->> " + keyword);
                       keyword = keywordFile.nextLine();
                       System.out.println("next keyword " + keyword);
                       ///* reset search to top of site file */
                       siteFile = new Scanner(new 
                         FileReader(fileChooser.getSelectedFile()));
                         sCurrentLine = siteFile.nextLine().trim();
                   }
                   else {
                     sCurrentLine = siteFile.nextLine();
                     if (sCurrentLine == null) {
                       break;
                     }
                     if (!sCurrentLine.matches(keyword)){
                     System.out.println("The following keyword " + keyword + " does not exist in file "
                         + fileChooser.getSelectedFile());
                     }
                   }
                }  //2nd while loop
               }
           }
           catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
          }
           siteFile.close();
           keywordFile.close();
    }

我有一个名为keywords的文本文件,里面有关键字列表, 但我的逻辑是关闭的,我无法弄清楚为什么。 我想我可能需要最后一次运行循环,但不知道该怎么做 我的问题是关键字文件中的最后一个单词永远不会被读入。所以程序停在文本文件中的倒数第二个元素。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的代码应该做什么。

如果我理解了您的代码,您的任务是从包含关键字的文件中读取关键字,然后在另一个文件中查找所有关键字。这是对的吗?

您应该将读取关键字与文件分开,并在文件中搜索它们。您应该在列表中“加载”关键字,然后搜索文件。

在列表中加载关键字

keywordFile = new Scanner(new File("/home/mearts/keywords.txt"));
List<String> keywordsList = new ArrayList<>();
while (keywordFile.hasNextLine()) {
    keywordsList.add(keywordFile.nextLine());
}

并在文件中搜索关键字

siteFile = new Scanner((Readable) new FileReader(fileChooser.getSelectedFile()));
while (siteFile.hasNextLine()) {
    String sCurrentLine = siteFile.nextLine().trim();
    for (String keyword : keywordsList) {
        if (sCurrentLine.contains(keyword)) {
            System.out.println("Found it-->> " + keyword);
            break;
        }
    }
    System.out.println(
            "The following keyword " + keyword + " does not exist in file " + fileChooser.getSelectedFile());
}

我希望这会有所帮助:)