0

私は Java の初心者で、多くのコードの先頭で args.length をテストすることについて混乱しています。また、どのコードでも args.length が 0 より大きくならないのはなぜですか?

import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;

public class LowPortScanner {
public static void main(String[] args) {
String host = "localhost";
if (args.length > 0) {
host = args[0];
}
for (int i = 1; i < 1024; i++) {
try {
Socket s = new Socket(host, i);
System.out.println("There is a server on port " + i + " of "
+ host);
}
catch (UnknownHostException ex) {
System.err.println(ex);
break;
}
catch (IOException ex) {}
} // end for
} // end main
} // end PortScanner
4

7 に答える 7

1

mainコマンド プロンプトから mathodに入力する必要があります。

以下のように

java LowPortScanner TEST1 TEST2
于 2013-03-01T10:35:40.493 に答える
0

テストされていない場合、例外がスローされるため、host = args[0];違法になります。

ただし、これはあまり役に立たないnull hostように見えます。空の場合、またはさらに問題が発生するようです。

の長さargsが alwaysの場合は0、実際にパラメーター引数を渡していることを確認してください。

于 2013-03-01T10:33:42.923 に答える
0

コマンド引数がない場合、args[0]は失敗します。だからこそ守らなければならない。

于 2013-03-01T10:34:19.207 に答える
0

Java クラス ファイルの呼び出し方法によって異なります。コマンド プロンプトまたは bash シェルの場合:

Java LowPortScanner Argument1

コマンド プロンプト/bash で上記の行を入力すると、引数の数が 1 に増えます (Argument1クラス ファイルの後に引数が 1 つあるためLowPortScanner) 。

java LowPortScanner Argument1 Argument2

上記の行は、引数の数を 2 に増やします。

したがって、2 番目のケースと最初のケースにargs.lengthなります。21

于 2013-03-01T10:34:51.930 に答える
0

CMD または bash からプログラムを呼び出している場合は、次のように ARGuments を割り当てることができます
java LowPortScanner google.com

次に、「google.com」は引数[0]です。プログラムがコマンドライン属性をサポートしている場合、指定された引数が正しいかどうかをテストすることをお勧めします。

于 2013-03-01T10:36:09.400 に答える
0

argsinpublic static void main(String[] argsは、Stringコマンド ラインから渡された引数の配列です。

java LowPortScanner argument1 argument2

上記のコマンドを試すと、args.lengthが返され2ます。

長さをチェックする問題に関しては、コマンドライン引数を取ることができるJavaプログラムに対して行われ、引数が渡されない場合、入力を求めるプロンプトが表示されます。

if(args.length >0 ){
  //proceed using passed arguments
}else{
   //proceed with some default value
}

を使用してプログラムを実行しているjava LowPortScannerため、引数は渡されず、args.length常にゼロです。

さらに、引数を渡さずに使用host=args[0]すると、 が得られArrayIndexOutOfBoundsExceptionます。

于 2013-03-01T10:36:37.900 に答える
0

変数 String[] args は、引数を渡さない場合、コマンド ラインを介してプログラムに渡されるすべてのパラメーターを保持し、args の長さは 0 になります。アクセスする前に長さを確認することをお勧めします。サイズが0の場合

于 2013-03-01T10:38:03.387 に答える