0

0

Java 嵌套循环控制台输出彩色井字棋棋盘示例

冷漠man

冷漠man

发布时间:2026-03-17 15:02:04

|

500人浏览过

|

来源于php中文网

原创

根本原因是终端不支持ANSI转义序列或JVM未启用着色支持;Windows旧版cmd默认禁用,需改用Windows Terminal/PowerShell并执行chcp 65001,IDE中需勾选“Enable ANSI colors”,推荐使用Jansi库自动适配。

java 嵌套循环控制台输出彩色井字棋棋盘示例

Java 控制台输出彩色字符为什么总显示乱码或方块

根本原因是终端不支持 ANSI 转义序列,或 JVM 没启用控制台着色支持。Windows 旧版 cmd 默认禁用 ANSI,即使写了 \u001b[32m 也只当普通字符输出;Linux/macOS 终端一般支持,但 IDE 内置终端(如 IntelliJ 的 Terminal)可能默认关闭 ANSI 解析。

实操建议:

立即学习Java免费学习笔记(深入)”;

  • Windows 上优先改用 Windows Terminal 或 PowerShell(≥5.0),并在运行前执行 chcp 65001 切换 UTF-8 编码
  • IDE 中启动 Java 程序时,勾选「Enable ANSI colors」选项(IntelliJ 在 Run Configuration → Environment → Emulate terminal in output console)
  • 代码里别硬写转义序列,用现成的库更稳——比如 Jansi:加依赖后调用 AnsiConsole.systemInstall() 自动适配
  • 验证是否生效:运行 System.out.print("\u001b[31mRED\u001b[0m"),看到红色“RED”才算通路走通

嵌套循环画井字棋盘时,行列索引和格子内容怎么对齐才不偏移

常见错误是把 ij 直接当坐标用,却忽略棋盘中“横线”“竖线”“交点”需要不同处理逻辑。比如 3×3 棋盘实际要输出 5 行(3 行内容 + 2 行分隔线),列方向同理,纯二维数组遍历会漏掉分隔符位置。

实操建议:

立即学习Java免费学习笔记(深入)”;

  • 用单层循环控制总行数(如 for (int row = 0; row ),再在每行内用条件判断:偶数行画格子内容(<code>row % 2 == 0),奇数行画横线
  • 格子内容行里,用 for (int col = 0; col :偶数列填 <code>board[row/2][col/2],奇数列填竖线
  • 避免用 System.out.println() 频繁换行——先拼好一整行字符串再输出,否则 ANSI 颜色重置(\u001b[0m)容易漏写导致后续所有输出变色

给 X/O 加颜色时,为什么有的格子染不上色,或者整行都变绿

ANSI 颜色控制是“持续生效”的,直到遇到 \u001b[0m 才重置。如果某个格子忘了关色,后面所有输出(包括空格、竖线、换行符)都会继承前一个颜色;反过来,如果过早关色,下一个格子又没开色,就退回到黑白。

Picsart AI Image Generator
Picsart AI Image Generator

Picsart推出的AI图片生成器

下载

实操建议:

立即学习Java免费学习笔记(深入)”;

  • 每个格子内容必须包裹完整色块:"\u001b[34mX\u001b[0m""\u001b[31mO\u001b[0m",不能只写开头
  • 空格格子也要显式着色(比如灰色 \u001b[37m.\u001b[0m),否则默认色可能和背景混在一起看不清
  • 分隔线(横线、竖线)统一用重置色 \u001b[0m 开头,避免被上一行残留颜色污染
  • 调试时临时在每行末尾加个标记字符(如 "|END|"),一眼能看出颜色是否溢出

为什么在某些 Linux 终端里颜色正常,Windows 上却全黑或全白

本质是终端对 ANSI 序列的支持粒度不同:部分终端只认基础 8 色(\u001b[31m),不支持 256 色(\u001b[38;5;124m)或真彩色(\u001b[38;2;255;0;0m)。强行用高阶色号,老终端直接忽略整个序列,只剩文本。

实操建议:

立即学习Java免费学习笔记(深入)”;

  • 坚持用基础 8 色:红 \u001b[31m、绿 \u001b[32m、蓝 \u001b[34m、灰 \u001b[37m,兼容性最高
  • 避免使用背景色(如 \u001b[42m),很多终端对背景色渲染异常,尤其浅色主题下文字直接消失
  • 不要依赖字体加粗(\u001b[1m)来增强对比——它在某些终端会触发反色,反而降低可读性

最麻烦的其实是颜色语义一致性:X 用红、O 用蓝,这个选择本身没问题,但得确保用户终端的“红色”确实看起来像红,而不是暗棕。真要跨平台稳,不如加个 ASCII 符号区分(比如 X 带括号 (X),O 带星号 *O*),颜色只是锦上添花。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

19

2026.02.03

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1570

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1269

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1206

2024.04.29

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.5万人学习

C# 教程
C# 教程

共94课时 | 11.5万人学习

Java 教程
Java 教程

共578课时 | 83.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号