0

以下代码给出“线程“main”java.lang.Error中的异常:未解决的编译问题:url无法解析为变量”错误。命令行参数可以有三四个,所以我用了一个if语句来测试它,但是代码似乎并没有从命令行获取String url。

public static void main(String[] args) throws Exception {


    Socket sock = new Socket("kjlkjlkjl", 80);
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
    writer.write("GET "+ url +"HTTP/1.1\r\n"
            + "Host: jhkjhkjhkjh\r\n"
            + "Connection: keep-alive\r\n"
            + "\r\n");
}
4

2 回答 2

3

您确定您url在内部if-else声明,并且您的writer.

以下列方式更改您的代码:

    String url;
    String target;
    String replacement;
    int odd = -1;
    if(args.length > 3)
    {
        odd = Integer.parseInt(args[0]);
        url = args[1];
        target = args[2];
        replacement = args[3];
    }
    else if(args.length > 2)
    {
        url = args[0];
        target = args[1];
        replacement = args[2];
    }

编辑:我认为您需要观看基础知识

于 2013-11-05T21:20:22.033 回答
1

为了补充@alex2410 所说的内容,这是一个范围界定问题。所有声明的变量都有一个可以识别的特定范围。变量的范围可以由最近的一组封闭花括号确定。您上面的示例在 if/else if 块中有两个“url”声明。这意味着它们的范围仅限于该块。@alex2410 提出了一个正确的解决方案,它为 String url 提供了一个仅限于 main 方法的范围。

于 2013-11-05T21:47:54.340 回答