java - 从网络读取数据

标签 java url exception infinite

我需要读取 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 。这是我出错的地方吗?我是否输入了错误的内容?如果需要的话我可以提供更多信息。也欢迎任何风格或概念见解;我正在尝试学习。谢谢!

最佳答案

您实际上从未从扫描仪中读取过任何文字。 hasNext 返回 true,因为有一个单词您可以读...但您从未真正读过它,因此它一直准备好供您阅读,因此 hasNext 不断返回 true。

只需在循环内调用input.next()即可。

关于java - 从网络读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247387/

相关文章:

java - SimpMessagingTemplate 不在 spring boot 中发送消息

url - Symfony2:如何将URL querystring参数传递给 Controller ​​?

python - 处理 __init__ 中的异常

java - 如何解决错误 "java.lang.IllegalArgumentException: Can' t 初始化已配置的调试器!”在 smack 中

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - 无法部署涉及 Crawler4j 的项目

java - 安装 Gradle Eclipse 插件后,Gradle 构建文件夹未显示

java - 如何在单击时关闭此 JOptionPane?

java - 在 Java 中接受文件路径和 URL

javascript - 使用 *.ini 配置文件通过 URL 更改 HTML 文本