Java 向main方法传值时关于*号的问题

现有要求如下:

  通过cmd的方式,求简单表达式的值。

  比如输入 java Expression 3 + 4

  得到的结果为:7

代码:

import java.text.DecimalFormat;

public class Expression {

public static void main(String[] args) throws Exception {
  if(args == null || args.length != 3){

    //MyException只是简单的继承Exception,可视为就是Exception。(这里是因为题目上的特殊要求,请忽略......)
    throw new MyException("参数格式不正确");
  }

  //表达式中的左操作数
  double left = Double.valueOf(args[0]);

  //操作符:+、-、*、/
  String operate = args[1];

  //右操作数
  double right = Double.valueOf(args[2]);
  //运算结果
  double result;


  switch (operate) {
    case "+":
      result = left + right;
    break;

    case "-":
      result = left - right;
    break;

    case "*":
      result = left * right;
    break;

    case "/":
      result = left / right;
    break;

    default:
      throw new MyException("参数格式不正确");
  }

  System.out.println(new DecimalFormat("0.00").format(result));
  }
}

运行结果:

发现仅当 操作符为 * 号时,程序有问题

修改程序,将输入为: 2 * 3 时的args数组进行输出

if(args != null){
  for(int i = 0;i < args.length;i++){
    System.out.println(args[i]);
  }
}

发现当输入参数为‘*’时,args数组中会有很多数据

对比发现,刚好和该java文件路径下所有文件的名字重复

所以推算出:向main方法传值时,输入*号,会向args数组添加该java文件路径下所有文件的名字

猜你喜欢

转载自www.cnblogs.com/xiaokediandian/p/9157449.html