命令行参数java *正在重载以获取文件名

珍妮

我正在用Java语言编写最简单的计算器,它可以提取命令行参数,除了乘法功能之外,其他所有功能都可以正常工作。由于某种原因,它会从当前位置获取文件名。我完全不知道为什么会发生这种情况,以及如何将其关闭... Google毫无帮助。

public class Calculate {

    public static void main(String[] args) {

        System.out.println(args[0] + " " + args[1] + " " + args[2]);

        if (args.length != 3) {
            System.out.println("<number1> <operator> <number2>");
        } else {

            final int num1 = Integer.parseInt(args[0]);
            final int num2 = Integer.parseInt(args[2]);
            switch (args[1]) {
            case "+":
                System.out.println(num1 + num2);
                break;
            case "-":
                System.out.println(num1 - num2);
                break;
            case "*":
                System.out.println(num1 * num2);
                break;
            case "/":
                System.out.println(num1 / num2);
                break;
            }
            System.out.println("\n");
        }
    }
}

在此处输入图片说明

威廉·范昂塞姆

这与java无关,但是与命令行一起,您需要使用:

java Calculate 2 "*" 3

原因是*在命令行中将其解释为通配符:它被文件夹中的所有文件替换,幸运的是只有一个这样的文件。这是几乎所有(基本)shell的默认行为。但是,如果您在单引号'*')或双"*"引号之间编写它,则外壳程序不会解释它,而是将其作为字符传递。

因此,基本上发生的是您的呼叫被cmd替换为:

java Calculate 2 <files in the directory> 3

换句话说,java甚至不知道您曾经使用过通配符,因为调用程序之前已将通配符替换了。

可以在此处找到更多信息(尽管该网站是针对Linux Shell设计的,但是这些想法通常适用)。

编辑

正如@PatriciaShanahan所说,您也可以将整个表达式放在引号中,例如:

java Calculate "2 * 3"

但是请注意,在这种情况下,args[0]它将包含"2 * 3"(并且长度为argsbe 1,因此您不能从shell解析表达式的一部分中受益),因此您需要自己将字符串细分为多个部分。而且您不会完全删除引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Python的命令行参数获取文件名

来自分类Dev

获取命令行的文件名

来自分类Dev

Python命令行参数文件名

来自分类Dev

从命令行获取参数的问题

来自分类Dev

从minidump获取进程命令行参数

来自分类Dev

文件路径作为命令行参数

来自分类Dev

从文件中读取命令行参数

来自分类Dev

.command文件的命令行参数

来自分类Dev

如何将XML文件内容作为命令行参数传递给Java命令?

来自分类Dev

如何将XML文件内容作为命令行参数传递给Java命令?

来自分类Dev

从python中的命令行参数获取文件路径

来自分类Dev

如何从文件中获取命令行参数

来自分类Dev

我无法获取.exe文件的命令行参数

来自分类Dev

命令行Java + Jar文件

来自分类Dev

如何使用命令行参数选择然后更改一组文件名

来自分类Dev

“错误的命令行参数”如何处理文件名中的空格

来自分类Dev

无法将两个命令行参数即文件名传递给函数

来自分类Dev

如何使用命令行参数选择然后更改一组文件名

来自分类Dev

在 perl 中使用命令行参数作为文件名

来自分类Dev

如何从Java Equinox软件包获取命令行参数?

来自分类Dev

如何在IntelliJ IDEA 14.1中获取运行Java的命令行参数

来自分类Dev

如何在命令行中发送命令行参数以执行python文件?

来自分类Dev

如何找出正在运行的程序的命令行参数?

来自分类Dev

我正在学习bash,与命令行参数混淆

来自分类Dev

python:使用文件B中文件A的命令行参数

来自分类Dev

从命令行解析器获取无效的参数

来自分类Dev

在node.js中获取原始命令行参数

来自分类Dev

在Vagrantfile中获取vagrant命令行参数

来自分类Dev

Spring Boot在配置代码中获取命令行参数

Related 相关文章

热门标签

归档