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

如何在Java控制台中使用Font类将用户输入的坐标设为加粗

控制台输入内容加粗的正确实现方式

你之前的思路有个核心误区:java.awt.Font是给Swing、AWT这类GUI图形界面组件用的,和控制台(终端)的文本渲染完全不搭边,所以用它去设置Scanner根本没用——Scanner只是负责读取用户输入的工具,本身不控制输入内容的显示样式。

要在控制台实现文本加粗,得用ANSI转义序列,这是绝大多数现代终端(Windows 10+的CMD/PowerShell、Linux/macOS终端)都支持的文本控制代码。

修改后的代码示例

import java.util.Scanner;

public class WorkArea {
    // ANSI转义码:开启加粗样式
    private static final String ANSI_BOLD = "\u001B[1m";
    // ANSI转义码:重置所有样式(必须加,否则后续文本都会保持加粗)
    private static final String ANSI_RESET = "\u001B[0m";

    public static void main(String[] args) {
        Scanner obj = new Scanner(System.in);

        for (int j = 0; j < 2; j++) {
            System.out.println("\nPLAYER " + (j + 1) + ", ENTER YOUR SHIPS' COORDINATES.");

            for (int i = 0; i < 5; i++) {
                System.out.println("Enter ship " + (i + 1) + " location:");
                String inp = obj.nextLine();
                
                // 把用户输入的内容加粗输出
                System.out.println("You entered: " + ANSI_BOLD + inp + ANSI_RESET);
                
                String[] arrOfStr = inp.split(" ");
                int x = Integer.parseInt(arrOfStr[0]);
                int y = Integer.parseInt(arrOfStr[1]);
            }
        }
        obj.close();
    }
}

额外说明

  • 输入过程中实时加粗:如果想让用户输入字符时就实时显示为加粗,需要更复杂的终端控制逻辑,或者使用第三方库(比如JLine),但对于你的战舰游戏场景,读取后再输出加粗内容已经足够满足需求。
  • 旧版Windows CMD兼容:如果用的是Windows 10之前的CMD,默认不支持ANSI转义码,需要先通过命令reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1开启支持,或者换用PowerShell、Windows Terminal这类终端。
  • 无需自定义Scanner的Font方法:Scanner本身不负责终端显示,所以完全没必要给它加setFont/getFont方法,这属于找错了处理对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:53:16