关于args的问题
大家看一下
public class TestArgs {
public static void main(String[] args) {
if(args.length<3){
System.out.println(
"Usage: java Test \"n1\" \"op\" \"n2\"");
System.exit(-1);
}
double d1 = Double.parseDouble(args [0]);
double d2 = Double.parseDouble(args[2]);
double d = 0;
if(args[1].equals("+")) d = d1+d2;
else if(args[1].equals("-")) d = d1-d2;
else if(args[1].equals("x")) d = d1*d2;
else if(args[1].equals("/")) d = d1/d2;
else{
System.out.println("Error operator!");
System.exit(-1);
}
System.out.println(d);
}
}
这代码中为什么要 if(args.length<3){ } ,不要的话会报错,为什么
------解决方案--------------------额。。。
如果没有 if判断,
如果输入的参数个数<3会报越界错误的。args [0]args [1]args [2].
你在cmd 命令行下运行。
而那个if语句就是提示你这样输入参数可以正确运行。
java 类名 操作数1 运算符 操作数2 (后来可以多加几个多余的都没关系。)
比如
javac TestArgs.java;
java TestArgs 1 + 2
------解决方案--------------------double d2 = Double.parseDouble(args[2]);
主要是这句话里有个2,说明数组必须长度大于等于3,不然的话,数组就越界。
然后的话,用cmd命令行的时候,如果不小心少输入了几个参数,就不会报错了。
------解决方案--------------------LS+1
------解决方案--------------------如果你的输入都是有大于=3个参数的,就没必要 ,这样子只是防止用户边界值
------解决方案--------------------为了防止用户少输数据
------解决方案--------------------因为你运用了args[]数组中的 args[0] args[1] args[2]
double d1 = Double.parseDouble(args [0]);
double d2 = Double.parseDouble(args[2]);
意思就是有3个变量(其中args[1]是运算符)。
其 args.length<3 就是判断 args的长度,也就是你在命令行参数上输入的字符不能超过3个