2015-03-25 5 views
1

Мне нужно прочитать количество слов на http://cs.armstrong.edu/liang/data/Lincoln.txt. Я написал свою программу, и NetBeans не дает мне никаких ошибок. Однако программа кажется бесконечной. Он не перестает пытаться выполнить, и в конечном итоге ответа не дается (или даже рассчитывается, я не уверен). Ниже приведен код.Чтение данных из Интернета

import java.net.*; 
import java.util.Scanner; 
import java.io.IOException; 
public class readDataFromWeb { 
    public static void main(String[] args) { 
     try { 
      URL url = new URL("http://cs.armstrong.edu/liang/data/Lincoln.txt"); 
      int wordCount = 0; 
      Scanner input = new Scanner(url.openStream()); 
      while(input.hasNext()) { 
       wordCount++; 
      } 
      System.out.println(url + " has " + wordCount + " words."); 
     } 
     catch (MalformedURLException ex) { 
      System.out.println("Invalid URL"); 
     } 
     catch (IOException ex) { 
      System.out.println("I/O Errors: No such file"); 
     } 

    } 
} 

Я нахожусь под впечатлением, что в первом, переменная URL типа URL объявлена, и установлена ​​в http://cs.armstrong.edu/liang/data/Lincoln.txt. Это где я ошибаюсь? Я что-то неправильно ввел? При необходимости я могу предоставить дополнительную информацию. Также приветствуются любые стилистические или концептуальные идеи; Я пытаюсь выучить. Благодаря!

+1

Вы никогда не читали никаких слов со сканера. – immibis

ответ

2

Вы никогда не читали никаких слов со сканера. hasNext возвращает true, потому что есть слово, которое вы могли бы прочитать ... но вы никогда его не читали, поэтому он продолжает быть готовым к чтению, поэтому hasNext сохраняет true.

Просто позвоните input.next() внутри петли.

+0

Вау, я знал, что это было что-то глупое. Я смотрел на него в течение 45 минут. Спасибо! Это решение сработало. –

Смежные вопросы