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

如何在Java中绘制图中所示的带星号图表

Hey there! Let's figure out how to make that aligned star chart work perfectly, even when your month names and star counts change dynamically. Here's a step-by-step solution with code examples to get you sorted:

Core Idea

The key to alignment is calculating two critical values first:

  1. The maximum length of your month names (so all month labels line up neatly).
  2. The maximum absolute value of your star counts (this sets the fixed width for both positive and negative star sections, ensuring the "zero point" stays aligned across all rows).

Example Implementation (Python)

I'll use Python here because its string formatting makes alignment super straightforward, but the logic translates easily to other languages too.

# Your dynamic input data (replace with your actual arrays)
months = ["January", "February", "March", "April", "May"]
star_counts = [3, 6, -9, 0, 8]

# Calculate fixed widths for alignment
max_month_width = max(len(month) for month in months)
max_star_width = max(abs(count) for count in star_counts)

# Generate each aligned row
for month, count in zip(months, star_counts):
    # Align the month label first
    aligned_month = f"{month:<{max_month_width}}"
    
    if count < 0:
        # Negative counts: stars go to the LEFT of the zero marker
        stars = '*' * abs(count)
        line = f"{aligned_month} {stars:<{max_star_width}} |"
    elif count > 0:
        # Positive counts: stars go to the RIGHT of the zero marker
        stars = '*' * count
        line = f"{aligned_month} | {stars:>{max_star_width}}"
    else:
        # Zero stars: just show the aligned month and empty space
        line = f"{aligned_month} | {' ':>{max_star_width}}"
    
    print(line)

Output of This Code

January  |        ***
February |      ******
March    ********* |
April    |           
May      |        ********

Notice how the | (our zero marker) stays perfectly aligned across every row, no matter if stars are positive, negative, or zero.

Key Details to Adapt

  • Adjust the zero marker: Swap | with 0 if you want a more explicit zero point.
  • Different symbols for +/-: Use - for negative counts and * for positive to make them easier to distinguish.
  • Handle large counts: If you have star counts that are way too long, add a check to cap the display (e.g., if abs(count) > 20, show ****... instead of all stars).
  • Other languages: The same logic applies—just use your language's string formatting tools to set fixed widths and alignment (like String.format() in Java, or printf in C).

This approach is fully dynamic, so it'll automatically adjust the alignment whenever your month names or star counts change.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:48:15