web-dev-qa-db-ja.com

args.lengthとコマンドライン引数

Args.lengthの使用方法に混乱しました。ここで、何かをコーディングしました。

public static void main(String[] args) {
    int [] a = new int[args.length];

    for(int i = 0;i<args.length;i++) {
        System.out.print(a[i]);
    }
}

コマンドライン引数にどのような値を入力しても、出力は0です。おそらくargs.lengthとargs [0]を混同していると思いますが、誰かが説明できますか?ありがとうございました。

5

int配列はデフォルトでゼロに初期化されます(すべてのメンバーはゼロになります)。 4.12.5。変数の初期値 を参照してください。

各クラス変数、インスタンス変数、または配列コンポーネントは、作成時にデフォルト値で初期化されます...

int型の場合、デフォルト値はゼロです。

配列の値を出力しているため、0を取得しています。

あなたはこれをやろうとしましたか?

for (int i = 0; i < args.length; i++) {
     System.out.print(args[i]);
}

argsには、プログラムに渡されるコマンドライン引数が含まれています。
args.lengthは引数の長さです。たとえば、次のコマンドを実行した場合:

Java myJavaProgram first second

args.lengthは2になり、["first", "second"]が含まれます。

また、配列argsの長さは自動的に2(パラメーターの数)に設定されるため、argsの長さを設定する必要はありません。

20
Maroun

文字列をintに変換するコードが不足していると思います。

public static void main(String[] args) {
    int [] a = new int[args.length];

    // Parse int[] from String[]
    for (int i = 0; i < args.length; i++){
        a[i] = Interger.parseInt(args[i]);
    }

    for (int i = 0; i < args.length; i++){
        System.out.print(a[i]);
    }
}
2
Bohemian

args.lengthは= 0です。

この出力を探している場合:

args [0]:zero
args [1]:one
args [2]:two
args [3]:three

ここに例があります...

public static void main(String [] args){

//配列名が "arg"の配列String [] arg = {"zero"、 "one"、 "two"、 "three"};

        for( int i=0; i<arg.length ;++i)
        {
            System.out.println("args["+i+"]:"+arg[i]);
        }
    }
    }

配列に長さを指定する必要があります。

1
Renz Mallari

反復するa配列は、実際の引数を含むargsではありません。試してみてください:

public static void main(String[] args) {
      for(int i = 0;i<args.length;i++){
          System.out.print(args[i]);
      }
}
1
Guillaume

args[0]は、args配列の最初の要素です。 args.lengthは配列の長さです

1
Prasad Kharkar

渡す引数は、いわゆる配列aではなく、args配列に格納されます。デフォルトでは、初期化されていない場合、適切に宣言された配列は、そのデータ型のデフォルト値を取ります。あなたの場合は0。

そうしたらいい

public static void main(String[] args) {
for(int i = 0;i<args.length;i++){
System.out.print(args[i]);
}
}

または、配列aを引数で初期化します。

0
akhil