最近我遇到了这段代码,我真的很想了解何时以及如何使用这个 args.length
import java.util.*;
class Average
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int choice;
int a=0,min=0,max=0,x;
int n = args.length;
System.out.println("1-Sum");
System.out.println("2-Average");
System.out.println("3-Minimum");
System.out.println("4-Maximum");
System.out.println("enter your choice");
choice = sc.nextInt();
for(int i=0;i<n;i++)
{
a+=Integer.parseInt(args[i]);
}
switch(choice)
{
case 1: System.out.println("The sum is :" +a/n);
break
case 2: System.out.println("The Average is :" +a/n);
break
case 3: for(int i=0;i<n-1;i++)
{
x=Integer.parseInt(args[i]);
if(x<Integer.parseInt(args[i+1]))
min=x;
else min=Integer.parseInt(args[i+1]);
}
System.out.println("The minimum is :" +min);
break;
case 4: for(int i=0;i<n-1;i++)
{
x=Integer.parseInt(args[i]);
if(x>Integer.parseInt(args[i+1]))
max = x;
else max=Integer.parseInt(args[i+1]);
}
System.out.println("The maximum is :" +max);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
该main()方法是初始点java程序执行的开始。这就是main()方法是public,static和的原因void。传递给main()方法的参数是String args[]一个字符串数组。不一定是变量名只能是args,它可以是任何变量名即String names[]。
现在,当没有传递参数时,为什么args.length为零:
当任何 Java 程序从命令行运行时,它都以java ProgName. 命令行参数作为java ProgName Arg1 Arg2. 在此示例中,将两个参数传递给 java program ProgName。很简单,将参数传递给 java 程序的方式与我们在任何操作系统上运行带参数的命令的方式相同。参数仅通过分隔符作为“空格”与命令一起传递。
Java 解释器解释这些参数并传递给main()java 程序的方法。当我们从命令行向 java 程序传递参数时,它存储在args[]字符串数组中。由于这里有两个参数传递,运行Java程序时args[0],并args[1]会被允许的,但args[2]不会。如果没有传递参数,同样的方式,所以 java 甚至不允许args[0].
Java 将命令行参数解释为 String 数组,就好像我们传递 2 个参数它是一个带有 的数组args[0], args[1],如果我们传递 4 个参数它是一个带有 的数组,args[0], args[1], args[2], args[3]并且当没有传递参数时它仍然是一个没有元素的 String 数组对象。
因此,即使我们没有将任何命令行参数传递给 java 程序,仍然args.length等于零- (0)。