java - 如何在java中用星号绘制图中给出的图表
问题描述
我正在尝试获得如图所示的图表。我在每个月的整数数组中有一个包含月份名称和相应星号数的字符串数组(例如,5 月为 8,3 月为 -9)。我正在尝试使用这种对齐方式进行绘图。每个月的星号值随给定输入而变化。我不知道如何进行这种对齐。
解决方案
我的第一种方法是这样的:
String[] names = new String[]{"January", "February", "March", "April", "May", "June", "July"};
int[] asterisks = new int[]{15, 17, -7, -9, 7, 13, 15};
int maxMinName = 0, maxMaxName = 0;
for (int asterisk : asterisks) {
if (asterisk > maxMaxName) {
maxMaxName = asterisk;
}
if (asterisk < maxMinName) {
maxMinName = asterisk;
}
}
final String fmt =
"%" + Math.max(1, Math.abs(maxMinName)) +
"s|%-" + Math.max(1, Math.abs(maxMaxName)) + "s %s";
for (int i = 0; i < names.length; i++) {
StringBuilder asterisk = new StringBuilder();
for (int j = 0; j < Math.abs(asterisks[i]); j++) {
asterisk.append('*');
}
if (asterisks[i] < 0) {
System.out.println(String.format(fmt, asterisk, "", names[i]));
} else {
System.out.println(String.format(fmt, "", asterisk, names[i]));
}
}
产生:
|*************** January
|***************** February
*******| March
*********| April
|******* May
|************* June
|*************** July
推荐阅读
- javascript - React Native 模态样式
- android - 发生了什么 jar(库)编译版本与应用程序编译版本不同?
- django - 在 Jinja2 模板中使用日期过滤器会引发 TemplateSyntaxError
- c# - ConfigurationManager 错误:通用类型“configurationmanager<T>”需要 1 个类型参数
- postgresql - 行级安全启用更新不起作用,而标准更新使用相同的逻辑
- android - 使用linkedin登录时获取LinkedIn响应为空-特定用户案例
- git - git config --global core.autocrlf false 仍然尝试转换行尾?
- c# - 将文本框值与数据库值进行比较并更新到不同的表中
- java - AppInventor2 TCP 客户端扩展使应用程序崩溃
- javafx - Change Listener 是否只添加了一次或多次