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

Posted xiaokediandian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件路径下所有文件的名字






































以上是关于Java 向main方法传值时关于*号的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Vue eventBus总线传值时的生命周期问题

关于vue监听dom与传值问题

java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query

Vue 父组件向子组件传值,传方法,传父组件整体

父组件向子组件传值遇到的问题

关于java方法调用