You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:04