简体   繁体   中英

args.length and command line arguments

I got confused with how to use args.length , I have coded something here:

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]);
    }
}

The printout is 0 no matter what value I put in command line arguments, I think I probably confused args.length with the args[0] , could someone explain? Thank you.

int array is initialized to zero (all members will be zero) by default, see 4.12.5. Initial Values of Variables :

Each class variable, instance variable, or array component is initialized with a default value when it is created ...

For type int, the default value is zero .

You're printing the value of the array, hence you're getting 0 .

Did you try to do this?

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

args contains the command line arguments that are passed to the program.
args.length is the length of the arguments. For example if you run:

java myJavaProgram first second

args.length will be 2 and it'll contain ["first", "second"] .

And the length of the array args is automatically set to 2 (number of your parameters), so there is no need to set the length of args.

I think you're missing a code that converts Strings to ints:

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[0] is the first element of the args array. args.length is the length of the array

The a array you iterate on is not the args that contains the actual arguments. You should try:

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

if you're looking for this output:

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

here is the example:

public static void main(String[] args) {
    // array with the array name "arg"
    String[] arg = {"zero", "one", "two", "three"};

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

you have to give a length to the array.

The arguements you are passing are stored in args array and not in your so called array a . By default a properly declared array if not initialized takes the default values of its datatypes. In your case 0.

So you can do:

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

or initialize the array a with the args .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM