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文件路径下所有文件的名字

原文地址:https://www.cnblogs.com/xiaokediandian/p/9157449.html

时间: 2024-08-28 23:07:19

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

为什么java的main方法必须是静态的

今天看类型信息时发现一个问题,不能再main方法中打印this关键字的信息,这时想起了之前的知识,不能再静态方法中调用this.理由很简单,this表示"这个对象",也就是声明一个类的对象,然而静态方法是不属于某一个特定对象而是属于这个类的.那么问题来了,为什么main函数必须设置成静态的呢? 首先,main函数作为java程序的入口,也可以理解为一个接口,这个接口不是提供给程序员使用的,这时提供给用户等使用的,用户等不需要知道程序内部的实现,只需要知道接口就可以了,如果是非静态的,那

为什么Java的main方法必须是public static void?

Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public.static.void 的.当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public.static.void,这篇文章尝试去找到一些答案. Main 方法是 Java 程序的入口,记住,我们这里不会讨论 Servlet.MIDlet 和其他任何容器管理的 java 程序,在 java

Android 项目中执行java的main方法

Android 项目中执行java的main方法 导语 今日,在android项目中写了一个工具类,为了简单测试一下输出,就只直接在类中加上了main方法,于是问题来了: 解决方法是网上找到了,已经解决了,在此记录一下. 右击项目名,调出Properties窗口,打开Run/Debug Settings 标签,右边即列出了这个项目中含有main方法的所有java类,双击你要允许的java类:

你知道java的main 方法启动后,会有多少个线程吗?

你知道java的main 方法启动后,会有多少个线程吗? package com; import java.util.stream.Stream; /** * 你知道java的main 方法启动后,会有多少个线程吗? */ public class ThreadTest { public static void main(String[] args) throws InterruptedException { Thread mainThread = Thread.currentThread();

JAVA的main方法

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方 法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: public class HelloWorld

java 理解main方法

理解main方法 方法的定义格式 public static 返回值类型 方法名称(参数列表) 之前的方法定义上都增加了static关键字,为什么要增加static关键字? [java] view plaincopyprint? public class Test4 { public static void main(String[] args) { fun(); } public static void fun(){ System.out.println("你好"); } } 主要是

【细说Java】揭开Java的main方法神秘的面纱(转)

大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可以继承么?可以重载么?可以被其他方法调用么? 1. main方法为什么这么定义? (1) 因为main方法在启动时是通过Java的虚拟机,也就是JVM来调用的,并且没有通过对象的引用来调用,所以main方法是public和static的.而void是因为,main方法在退出时,没有给退出代码,而是在

java基础-main方法详解

/* 主函数(主方法) * 1.public (访问修饰符,公共的)代表该类或者该函数访问权限是最大的 * 2.static 代表主函数随着类的加载就已经粗在了 * 3.void 代表主函数没有具体的返回值 * 4.main main不是一个java关键字,他是一个特殊的单词,他能够被jvm(java虚拟机)所识别 * 5.string[] args函数的参数是一个字符串数组,该数组的元素是字符串 * */ public class A6_38 { public static void main

java程序main方法的参数String[] args

public class ArgsTest { public static void main(String[] args) { System.out.println(args.length); for(int i=0;i<args.length;i++) { System.out.println(args[i]); } } } javac ArgsTest.java编译程序. 执行java ArgsTest运行程序. 此外,java中也可以使用Scanner从键盘获取输入. import ja