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