我正在尝试获取用户输入并打印出收到的URL中的内容。我有我需要的一切,但我需要帮助使用户输入只有http://。从那里我会把它移动到我的字符串中以显示它的内容。我也一直得到java.net.MalformedURLException:没有协议错误。我该如何解决这个问题并实现这个代码?
import java.util.*;
import java.io.PrintWriter;
import java.util.Scanner;
import java.net.URL;
import java.io.IOException;
import java.net.URLConnection;
class Lab9
{
public static void main(String[] args) throws IOException
{
{
System.out.println ("Enter a URL");
Scanner myInput = new Scanner(System.in);
String input = myInput.nextLine();
URL url = new URL(input);
//Here I want to add user input and get a URL that only contains http://
String address = " ";
URL pageLocation = new URL(address);
Scanner in = new Scanner(pageLocation.openStream());
while (in.hasNext())
{
String line = in.next();
if (line.contains("href=\"http://"))
{int from = line.indexOf("\"");
int to = line.lastIndexOf("\"");
System.out.println(line.substring(from + 1,to));
}
}
}
}
}
答案 0 :(得分:0)
我猜你想要一直询问用户,直到他们给你一个合适的网址。
更改此行
String input = myInput.nextLine();
到
String input = null;
while (true) {
input = myInput.nextLine();
if (input.startsWith("http://")) break;
System.out.println("Your URL must start with http://. Please try again!");
}
这基本上会继续提示用户,直到他们输入前缀为http://
的网址。当然,您应该更改消息以说出更好的内容(即更具体到您的应用程序)。
答案 1 :(得分:0)
这将尝试解析输入的网址并重试,直到用户输入有效的网址。
private static Scanner scanner;
public static void main(String[] args) {
String input = readInput();
boolean urlValid = false;
URL url = null;
while(!urlValid) {
try {
url = new URL(input);
urlValid = true;
System.out.println("The url was valid");
} catch (MalformedURLException e) {
System.out.println("The url was invalid, please try again");
input = readInput();
}
}
//continue processing
System.out.println("The url entered was: "+url.toString());
}
private static String readInput() {
System.out.println ("Enter a URL");
scanner = new Scanner(System.in);
return scanner.nextLine();
}