Android Studio中使用ANSI代码实现控制台输出着色失败求助
解决Android Studio控制台ANSI颜色输出异常的问题
我一眼就发现问题核心了——你的Colors.color()方法里的switch语句完全没加break!这会导致匹配到目标颜色后,后续所有case的代码都会依次执行,最终给文本套上了所有颜色的前缀和多个重置标记,这就是你看到一堆[30m[37m...乱码的原因。
第一步:修复Switch语句的Break问题
修改你的Colors类,给每个case块添加break,这样匹配到对应颜色后就会跳出switch,不会执行后续无关的颜色代码:
public class Colors { private static final String reset = "\u001B[0m"; private static final String black = "\u001B[30m"; private static final String red = "\u001B[31m"; private static final String green = "\u001B[32m"; private static final String yellow = "\u001B[33m"; private static final String blue = "\u001B[34m"; private static final String purple = "\u001B[35m"; private static final String cyan = "\u001B[36m"; private static final String white = "\u001B[37m"; public static String color(String toColor, String color){ switch(color){ case "red": toColor = red + toColor + reset; break; // 新增break case "green": toColor = green + toColor + reset; break; case "yellow": toColor = yellow + toColor + reset; break; case "blue": toColor = blue + toColor + reset; break; case "purple": toColor = purple + toColor + reset; break; case "cyan": toColor = cyan + toColor + reset; break; case "white": toColor = white + toColor + reset; break; case "black": toColor = black + toColor + reset; break; default: // 新增default分支,处理无效颜色输入 toColor = toColor; break; } return toColor; } }
第二步:开启Android Studio控制台的ANSI颜色支持
即使修复了代码,Android Studio默认可能没开启ANSI颜色解析,你需要检查以下设置:
- 打开Android Studio的
Settings(Windows/Linux:File > Settings;Mac:Android Studio > Settings) - 导航到
Build, Execution, Deployment > Console - 勾选Use color output选项
- 重启Android Studio让设置生效
第三步:测试验证
现在重新调用你的方法:
String message = "Unknown" + this.date; System.out.println(Colors.color("[*] Sending: \'"+message+"\' [*]","blue"));
应该就能看到正常的蓝色控制台输出了。
额外建议:可以考虑用枚举类来管理颜色,避免字符串匹配的潜在错误,比如定义一个Color枚举绑定颜色代码和名称,这样代码会更健壮,但上面的修复已经能解决当前核心问题。
内容的提问来源于stack exchange,提问作者DRE
相关产品推荐
相关产品推荐

