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]を混同していると思いますが、誰かが説明できますか?ありがとうございました。
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の長さを設定する必要はありません。
文字列を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]);
}
}
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]);
}
}
}
配列に長さを指定する必要があります。
反復するa
配列は、実際の引数を含むargs
ではありません。試してみてください:
public static void main(String[] args) {
for(int i = 0;i<args.length;i++){
System.out.print(args[i]);
}
}
args[0]
は、args
配列の最初の要素です。 args.length
は配列の長さです
渡す引数は、いわゆる配列aではなく、args配列に格納されます。デフォルトでは、初期化されていない場合、適切に宣言された配列は、そのデータ型のデフォルト値を取ります。あなたの場合は0。
そうしたらいい
public static void main(String[] args) {
for(int i = 0;i<args.length;i++){
System.out.print(args[i]);
}
}
または、配列aを引数で初期化します。