Java中如何检测数组是否包含*:Maven计算器乘法实现故障排查
问题根源
核心问题是命令行通配符自动展开,和Java代码逻辑无关:
*在绝大多数终端环境中属于通配符,会被自动替换为当前工作目录下的所有文件名列表。你配置2 * 6作为启动参数时,实际传入Java程序的args数组里根本不存在*元素,乘法判断永远为false,自然不会有输出。- 你修改为
boolean mul = Arrays.stream(args).anyMatch("".equals);后能运行完全是巧合,是通配符展开后的参数列表刚好命中了空字符串匹配,和乘法逻辑没有关联。
修复步骤
1. 还原Java代码逻辑
你最初写的乘法判断代码完全正确,不需要额外转义:
boolean mul = Arrays.stream(args).anyMatch("*"::equals);
注释中写的\\*匹配逻辑完全不需要,Java程序接收的参数如果是原生*,直接正常匹配即可。
2. 正确配置launch.json启动参数
要避免通配符展开,直接将参数拆分为独立数组元素配置即可:
"args": ["2", "*", "6"]
这种写法会将三个参数分别传入程序,不会触发*的通配符展开逻辑。
可选验证方法
可以在main方法开头增加参数打印逻辑,确认实际接收的参数内容:
System.out.println(Arrays.toString(args));
如果出现通配符展开,打印结果会是当前目录下的文件名列表,不会包含*元素。
内容的提问来源于stack exchange,提问作者RgTheGreat
相关产品推荐
相关产品推荐

