5

我对如何使用感到困惑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.lengthargs[0],有人可以解释一下吗?谢谢你。

4

6 回答 6

20

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 的长度。

于 2013-08-26T14:29:15.197 回答
2

我认为您缺少将字符串转换为整数的代码:

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]);
    }
}
于 2013-08-26T14:31:20.477 回答
1

您迭代的a数组不是args包含实际参数的数组。你应该试试:

public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        System.out.print(args[i]);
    }
}
于 2013-08-26T14:36:18.260 回答
1

args[0]args数组的第一个元素。 args.length是数组的长度

于 2013-08-26T14:29:56.940 回答
1
args.length == 0;

如果您正在寻找此输出:

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

这是示例:

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

你必须给数组一个长度。

于 2015-11-15T03:08:52.300 回答
0

您传递的论点存储在args数组中,而不是您所谓的数组a中。默认情况下,如果未初始化,则正确声明的数组采用其数据类型的默认值。在你的情况下 0。

所以你可以这样做:

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

a使用args.

于 2013-08-26T14:49:35.513 回答