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

Eclipse中Java printf()函数数值变量输出异常求助

Java printf输出数值变量显示问号的解决方案

问题现象

使用printf()输出布尔、字符、字符串类型变量正常,但int、double等数值变量输出时显示一串?,测试代码如下:

public class Main {
    public static void main(String[] args) {
        boolean myBoolean = false;
        char myChar ='$';       
        String myString = "Hello world";
        int myInt= 30;
        double myDouble = 123.456;
        System.out.printf("boolean = %b\n",myBoolean );
        System.out.printf("Char = %c\n",myChar );
        System.out.printf("String = %s\n",myString);
        System.out.printf("int = %d\n",myInt);
        System.out.printf("double = %f\n",myDouble );
    }
}

控制台输出:

boolean = false
Char = $
String = Hello world
int = ??
double = ??????????

问题原因

这是JVM输出编码与控制台编码不匹配导致的,数值类型的格式化输出字符无法被当前控制台编码正确解析,从而显示为问号。

解决步骤

  • 调整IDE编码设置

    • Eclipse:依次打开Window > Preferences > General > Workspace,将Text file encoding设为UTF-8;再进入Run/Debug > Console,把Console encoding也设为UTF-8。
    • IDEA:打开File > Settings > Editor > File Encodings,将Global Encoding、Project Encoding、Default encoding for properties files全部设置为UTF-8;然后在Run/Debug Configurations的对应程序配置中,在VM options里添加参数:-Dfile.encoding=UTF-8。
  • 强制指定JVM输出编码
    无论使用哪种IDE,直接在运行程序时添加VM参数-Dfile.encoding=UTF-8,确保JVM输出的编码和控制台编码一致。

  • 检查控制台字体
    确认控制台使用的字体支持ASCII字符(比如Consolas、Microsoft YaHei等),避免使用不兼容的特殊字体。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:22:52