日期:2014-05-20  浏览次数:20703 次

关于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个