Java 从联机文本中获取行时出错,无法正常运行

Java 从联机文本中获取行时出错,无法正常运行,java,Java,我试图从一个在线文本文件中输入一些地址,但在运行代码时有一些错误我不理解 错误是: Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at Main.main(Main.java:20) 我做错了什么 我用浏览器打开了url的文本,它打开正确(问题不在于连接或链接) 我正在

我试图从一个在线文本文件中输入一些地址,但在运行代码时有一些错误我不理解

错误是:

Exception in thread "main" java.util.NoSuchElementException: No line found  
      at java.util.Scanner.nextLine(Unknown Source)  
    at Main.main(Main.java:20)  
我做错了什么

我用浏览器打开了url的文本,它打开正确(问题不在于连接或链接)
我正在使用Windows命令提示符

import java.net.URL;
import java.util.Scanner;

class Address
{
    String street;
    String city;
    String state;
    int zip;
}

public class WebAddresses
{
    public static void main(String[] args) throws Exception
    {
        URL addys = new URL("http://cs.leanderisd.org/txt/fake-addresses.txt");
        Scanner fin = new Scanner( addys.openStream() );

        Address uno = new Address();
        uno.street = fin.nextLine();  //line 20
        uno.city   = fin.nextLine();
        uno.state  = fin.next();
        uno.zip    = fin.nextInt();
        fin.skip("\n");

        Address dos = new Address();
        dos.street = fin.nextLine();
        dos.city   = fin.nextLine();
        dos.state  = fin.next();
        dos.zip    = fin.nextInt();
        fin.skip("\n");

        Address tre = new Address();
        tre.street = fin.nextLine();
        tre.city   = fin.nextLine();
        tre.state  = fin.next();
        tre.zip    = fin.nextInt();
        fin.skip("\n");

        fin.close();

        System.out.println(uno.street + ", " + uno.city + ", " + uno.state + "  " + uno.zip);
        System.out.println(dos.street + ", " + dos.city + ", " + dos.state + "  " + dos.zip);
        System.out.println(tre.street + ", " + tre.city + ", " + tre.state + "  " + tre.zip);
    }
}

没有下一行了。这可能是因为流是空的,或者因为它的内容都在一行上。您可以使用
fin.hasNextLine()

检查是否有下一行。这可能是因为流是空的,或者因为它的内容都在一行上。您可以使用
fin.hasNextLine()

检查是否有下一行。问题不在您的代码中,而在服务器中。首先尝试缩短您的示例,如下所示:

public static void main(String[] args) throws Exception {
  URL addys = new URL("http://purple.com");
  Scanner fin = new Scanner( addys.openStream() );
  System.out.println(fin.nextLine());
}

请注意,我将您的示例中的url更改为。这太棒了!将其切换回,它将失败。服务器的配置方式似乎阻止了代码的访问。

问题不在于代码,而在于服务器。首先尝试缩短您的示例,如下所示:

public static void main(String[] args) throws Exception {
  URL addys = new URL("http://purple.com");
  Scanner fin = new Scanner( addys.openStream() );
  System.out.println(fin.nextLine());
}
请注意,我将您的示例中的url更改为。这太棒了!将其切换回,它将失败。服务器的配置方式似乎阻止了代码的访问。

该URL返回302“对象移动”响应,将您重定向到安全协议;请注意响应位置标头中的https

curl -v http://cs.leanderisd.org/txt/fake-addresses.txt

*   Trying 204.57.104.225...
* Connected to cs.leanderisd.org (204.57.104.225) port 80 (#0)
> GET /txt/fake-addresses.txt HTTP/1.1
> Host: cs.leanderisd.org
> User-Agent: curl/7.43.0
> Accept: */*
> 
< HTTP/1.1 302 Object Moved
< Date: Thu, 07 Apr 2016 20:13:01 GMT
< Connection: Keep-Alive
< Content-Length: 0
< Location: https://cs.leanderisd.org/txt/fake-addresses.txt
< 
* Excess found in a non pipelined read: excess = 1 url = /txt/fake-addresses.txt (zero-length body)
* Connection #0 to host cs.leanderisd.org left intact
该URL返回302“对象移动”响应,将您重定向到安全协议;请注意响应位置标头中的https

curl -v http://cs.leanderisd.org/txt/fake-addresses.txt

*   Trying 204.57.104.225...
* Connected to cs.leanderisd.org (204.57.104.225) port 80 (#0)
> GET /txt/fake-addresses.txt HTTP/1.1
> Host: cs.leanderisd.org
> User-Agent: curl/7.43.0
> Accept: */*
> 
< HTTP/1.1 302 Object Moved
< Date: Thu, 07 Apr 2016 20:13:01 GMT
< Connection: Keep-Alive
< Content-Length: 0
< Location: https://cs.leanderisd.org/txt/fake-addresses.txt
< 
* Excess found in a non pipelined read: excess = 1 url = /txt/fake-addresses.txt (zero-length body)
* Connection #0 to host cs.leanderisd.org left intact

正如你在错误中看到的,它提到了你程序的第20行-你能编辑你的帖子并指出它是哪一行吗?我在第20行添加了一条评论。上面没有任何内容的行也会被计算在内?正如你在错误中看到的,它提到了你程序的第20行-你能编辑你的帖子并指出它是哪一行吗?我在第20行添加了一条评论。上面没有任何东西的线也算上了?我试过了,它是假的。但这怎么可能呢?文本文件从第一行开始。我试过了,它是假的。但这怎么可能呢?文本文件从第一行开始。