URL输入和格式

时间:2014-04-12 00:12:32

标签: java url

我正在尝试获取用户输入并打印出收到的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));
  }
}
  }
}
  }

2 个答案:

答案 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();
}