2017-04-17 123 views
0

我有这样的代码while循环需要继续

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(); 
    } 

和我有有关键词的话, 列表称为关键字的文本文件,但我的逻辑是关闭的,我不能找出原因。 我想我可能需要最后一次运行循环,但不知道该怎么做 我的问题是关键字文件中的最后一个单词永远无法读入,所以程序停止在文本中的第2个到最后一个元素文件。

+1

在你的内心,而循环为什么在搜索的关键字做你检查for keyword == null? – mba12

+0

我认为如果关键字为null,循环将退出 – chris

+0

您只需要or语句的第一部分keywordFile.hasNext() – mba12

回答

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()); 
} 

我希望这将有助于:)

+0

是的谢谢你,但字符串关键字,似乎不包含任何数据 – chris

+0

@chris,你的意思是'keyword'是'null'?如果列表包含'null'元素,就会发生这种情况。或者你的意思是“似乎不包含任何数据”? –

+0

是的,它有一个空元素。谢谢 我想弄清楚有没有办法使用split(\\。)来删除这一行中的句点String sCurrentLine = siteFile.nextLine()。trim(); – chris