2016-12-05 60 views
0

對於我的計算機科學課,我們要創建一個程序,用戶輸入一個單詞,然後我們記下該單詞並猜測它是否拼寫正確。我們正在將這個詞輸入到dictionary.com並從它們中讀取它。通過閱讀網站創建拼寫檢查器

我們將他們輸入的字詞添加到dictionary.com網址,然後檢查該字詞是否顯示在網站上。如果它是拼寫正確,那麼如果它不拼寫正確。下面是用於讀取URL代碼:

URL url = new URL("http://www.dictionary.com/search?q=" + word); 

     // open a buffered reader on the url 
     InputStream inStr = url.openStream(); 

     BufferedReader reader = 
      new BufferedReader(new InputStreamReader(inStr)); 

當他們這樣做拼寫單詞正確的事情都解決了很大的,但是當他們拼寫錯誤,它拋出未發現異常的文件。這是拋出這個,因爲如果你在dictionary.com上搜索一個詞,它會改變鏈接。它通常會在「www.dictionary.com/search?q=word」中更改爲「http://www.dictionary.com/misspelling?term=wrod&s=t

因爲它會更改鏈接,所以會引發異常並且程序不起作用。有人對我應該做什麼或改變有什麼建議嗎?謝謝!

+4

抓住異常,並視爲拼寫錯誤。 – OldProgrammer

回答

0

哈克路:抓住異常並返回「不是一個字」。這種方法的問題是,如果網站不可用,它將返回「不是一個字」。

最好的方法:檢查看看你是否得到HTTP 200代碼或HTTP 302(重定向)並返回「不是一個字」。

0

我同意高度評價的意見,你應該發現這個例外,但我建議你使用HttpURLConnection類來使你的GET調用dictionary.com給定的單詞。如果您遵循以下模式,仍然可以捕獲來自站點的任何錯誤流。而且你應該能夠解析響應並檢查以確保它實際上來自錯誤的單詞。有一些例外發生的可能性其他原因,你不應該把它當作沒有被發現的詞。

String url = "http://www.dictionary.com/search?q=" + word"; 

URL obj = new URL(url); 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
con.setRequestMethod("GET"); 

int responseCode = con.getResponseCode(); 
// check the response code if you wish 
InputStream inputStream = null; 
try { 
    inputStream = con.getInputStream(); 
} 
catch (IOException exception) { 
    inputStream = con.getErrorStream(); 
} 
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); 

更新:

我只是試圖進入其中無法找到的單詞,和HTTP響應代碼爲404。因此,您可能只需檢查404的響應代碼即可脫身,或者更徹底地分析錯誤流。