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

Java实现单词菱形/钻石形状打印的程序开发求助

嘿,我懂你想做个把输入单词打印成菱形的程序,这玩意儿其实挺有成就感的!虽然你没贴出自己尝试的代码,但我可以给你唠唠常见的两种实现思路,再给你完整的示例代码,你可以对照着看看自己之前的写法哪里卡壳了~

第一种:逐行递增/递减单词前缀的菱形

这是最常见的需求,比如输入HELLO,输出效果是:

H
   HE
  HEL
 HELO
HELLO
 HELO
  HEL
   HE
    H

实现代码如下:

word = input("请输入一个单词:")
word_len = len(word)

# 打印菱形上半部分(从单个字符到完整单词)
for i in range(1, word_len + 1):
    # 计算每行前面需要的空格数
    leading_spaces = word_len - i
    # 拼接空格和当前行的单词前缀
    print(" " * leading_spaces + word[:i])

# 打印菱形下半部分(从完整单词的前n-1个字符递减到单个字符)
for i in range(word_len - 1, 0, -1):
    leading_spaces = word_len - i
    print(" " * leading_spaces + word[:i])
第二种:对称字符的菱形(类似钻石的对称结构)

如果你想要的是每行左右对称的菱形,比如输入ABC,输出效果是:

A
 ABA
ABCBA
 ABA
  A

那可以用下面的代码:

word = input("请输入一个单词:")
word_len = len(word)

# 上半部分:从单个字符扩展到完整对称行
for i in range(word_len):
    leading_spaces = word_len - i - 1
    # 拼接前缀和前缀的反转(去掉最后一个字符避免重复)
    current_line = word[:i+1] + word[:i][::-1]
    print(" " * leading_spaces + current_line)

# 下半部分:从倒数第二行对称行递减到单个字符
for i in range(word_len - 2, -1, -1):
    leading_spaces = word_len - i - 1
    current_line = word[:i+1] + word[:i][::-1]
    print(" " * leading_spaces + current_line)

小提示

如果你之前的代码没成功,大概率是这几个地方出了问题:

  • 循环的范围没搞对(比如上半部分是不是从1到单词长度,下半部分是不是从长度-1递减到1)
  • 空格的计算错误(没算准每行需要前置多少空格来居中)
  • 字符串切片用错了(比如word[:i]是不是取到了你想要的前缀)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:00:56