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

IntelliJ调试时使用Evaluate Log为何输出“void”?

为什么IntelliJ调试时会输出void?

嘿,我之前在IntelliJ里调试Java代码时也碰到过一模一样的问题!让我给你拆解下为啥会出现这些void输出。

先理清楚你的代码逻辑:数组a初始全是1,for循环里的a[i]++是自增操作,它的返回值是自增前的数值(也就是每次都会返回1),这个操作本身不会产生任何输出。

你看到的void 1交替输出,根源就在你对断点的日志配置上——当你通过Ctrl+Shift+F8打开View Breakpoints窗口时,你大概率做了以下两件事之一:

  • 情况1:在「Evaluate and log」区域添加了System.out.println(a[i]++)表达式
    System.out.println()是一个返回void的方法,IntelliJ的调试日志会默认记录你输入的每个表达式的返回值,所以会输出void;同时这个方法本身会打印出a[i]++的返回值1,两者叠加就出现了void 1的输出。

  • 情况2:在「Evaluate and log」区域同时添加了两个表达式
    比如一个是System.out.println(a[i])(返回值void),另一个是a[i]++(返回值1),每次断点触发时就会依次输出这两个表达式的返回值,也就是void 1。

怎么解决?

你只需要修改断点的配置:

  1. 按下Ctrl+Shift+F8打开View Breakpoints窗口,找到对应的循环断点
  2. 去掉「Evaluate and log」区域里那些返回void的方法调用(比如System.out.println相关的表达式)
  3. 如果只是想查看a[i]的值,直接在「Log」区域勾选「Breakpoint hit message」,然后在自定义消息里写{a[i]}就行——IntelliJ会自动帮你打印变量值,完全不需要手动调用System.out.println

内容的提问来源于stack exchange,提问作者Coder-Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:04