0

次のコードでは、「スレッド "main" java.lang.Error での例外: 未解決のコンパイルの問題: URL を変数に解決できません」というエラーが発生します。コマンド ライン引数は 3 つまたは 4 つある可能性があるため、if ステートメントを使用してテストしましたが、コードはコマンド ラインから文字列 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' の 2 つの宣言があります。これは、スコープがそのブロックに限定されていることを意味します。@alex2410 は、メイン メソッドに限定されたスコープを String url に与える正しい解決策を提案しました。

于 2013-11-05T21:47:54.340 に答える