args.length和命令行参数

时间:2013-08-26 14:27:05

标签: java args

我对如何使用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]混淆了,有人可以解释一下吗?谢谢。

6 个答案:

答案 0 :(得分:20)

默认情况下,

int数组初始化为零(所有成员都为零),请参阅4.12.5. Initial Values of Variables

  

每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化   ...

     

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

答案 1 :(得分: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]);
    }
}

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

args.length = 0;

如果你正在寻找这个输出:

args [0]:零
args [1]:一个 ARGS [2]:2个
ARGS [3]:3

这是示例......

public static void main(String [] args){

//数组名为&#34; arg&#34;             String [] arg = {&#34; zero&#34;,&#34; one&#34;,&#34; two&#34;,&#34; three&#34;};

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

你必须给数组一个长度..

答案 5 :(得分:0)

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

所以你做了

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

或使用args初始化数组a。