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行添加了一条评论。上面没有任何东西的线也算上了?我试过了,它是假的。但这怎么可能呢?文本文件从第一行开始。我试过了,它是假的。但这怎么可能呢?文本文件从第一行开始。