以下代码给出 “线程中的异常”主“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");
}
答案 0 :(得分: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];
}
编辑:我认为您需要观看basics
答案 1 :(得分:1)
要添加@ alex2410所说的内容,这是一个范围问题。所有声明的变量都具有可以识别的特定范围。变量的范围可以由最近的一组括号花括号确定。上面的示例在if / else if块中有两个'url'声明。这意味着它们的范围仅限于该块。 @ alex2410提出了一个正确的解决方案,它为String url提供了一个仅限于main方法的范围。