2017-04-17 217 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