欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-23 08:08:21
现有要求如下: 通过cmd的方式,求简单表达式的值。 比如输入 java Expression 3 + 4 得到的结果为:7 代码: import java.text.DecimalFormat; public class Expression { public static void main(S ......

现有要求如下:

  通过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));
  }
}

运行结果:

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

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

 

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

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

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

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

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

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

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