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

IntelliJ中Java程序无法读取命令行参数?

问题分析与解决方案

嘿,这个问题其实是把「程序命令行参数」和「控制台标准输入」搞混啦,我来给你掰扯清楚:

核心原因

你代码里用的Scanner.nextInt()是从控制台的标准输入流读取数据,而你在「Program Arguments」里填写的是传给Java程序的命令行参数——这俩完全是不同的输入渠道,所以程序会一直卡在那里等你在控制台手动输入数字,根本不会读取你填的Program Arguments内容。

两种解决办法,看你需求选:

办法1:修改代码读取命令行参数

如果你就是想通过Program Arguments传数字,那不需要用Scanner,直接从main方法的args数组里取参数就行,代码改成这样:

public class My_Counter {
    public static void main (String[] args){
        // 先判断有没有传入参数
        if (args.length == 0) {
            System.out.println("请在Program Arguments中填写一个数字哦");
            return;
        }
        try {
            // 把字符串类型的参数转成整数
            int num2 = Integer.parseInt(args[0]);
            System.out.println(num2);
        } catch (NumberFormatException e) {
            System.out.println("传入的不是有效数字,请检查Program Arguments内容");
        }
    }
}

改完之后,你在Program Arguments里填的数字就会被程序读取并输出了。

办法2:保持现有代码,正确输入控制台内容

如果你不想改代码,还是想用Scanner读取输入,那完全不用碰Program Arguments:

  • 运行程序后,找到IntelliJ底部的Run Console窗口(就是输出waiting for your number:的地方)
  • 点击控制台窗口激活输入,输入数字后按回车,程序就会输出你输入的数字了

另外,如果想在调试时自动填入输入内容(不用每次手动敲),可以在Run Configurations里点击「Modify options」,选择「Redirect input from」,然后指定一个包含数字的文本文件,程序运行时就会自动读取这个文件里的内容作为输入。

内容的提问来源于stack exchange,提问作者malajedala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:58:18