java - 如何打印从用户输入开始并降序排列的字母金字塔?

标签 java

这是家庭作业,我需要帮助理解如何以及为什么。

我尝试遵循网上的大量示例,但它们都硬编码“A”作为起点,并且我无法根据我的特定需求对示例进行逆向工程。

我必须打印以用户输入开始的字母金字塔(也定义了金字塔的高度),假设用户输入了 E,如下所示:

E
ED
EDC
EDCB
EDCBA

我的第一个问题是我不明白如何让用户输入的字母成为每行的起点。

这是 Java,我不能使用数组或字符串,只能使用 char 和 int。

有人可以解释一下实现这一目标的逻辑吗?

这是我的第一步,这是我知道我可以实现的目标:

intHeight = chrUserLetter - 'A' + 1; 
chrCurrentLetter = chrUserLetter;

for ( intRowIndex = 1; intRowIndex <= intHeight; intRowIndex += 1 )
{
    for ( intColumnIndex = 1; intColumnIndex <= intRowIndex; intColumnIndex += 1)
    {
        System.out.print( chrCurrentLetter );
        chrCurrentLetter -= 1;              
    }

    System.out.println();                           
}

输出是:

E
DC
BA@
?>=<
;:987

最佳答案

只需移动第一个 for 中的行 chrCurrentLetter = chrUserLetter; 即可重新初始化它

public class Test {
    public static void main(String[] args) {
        char chrUserLetter='E';
        int intHeight = chrUserLetter - 'A' + 1;

        for ( int intRowIndex = 1; intRowIndex <= intHeight; intRowIndex += 1 )
        {
            char chrCurrentLetter = chrUserLetter;
            for (int intColumnIndex = 1; intColumnIndex <= intRowIndex; intColumnIndex += 1)
            {
                System.out.print( chrCurrentLetter );
                chrCurrentLetter -= 1;
            }

            System.out.println();
        }
    }
}

关于java - 如何打印从用户输入开始并降序排列的字母金字塔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44072958/

相关文章:

java - ConcurrentMap.remove() 是否在 get() 返回 null 之前提供先行边?

java - scala/Serializable NoClassDefFoundError (RMI w/Scala)

java - 请参阅 ANT 构建文件中的外部资源

一段时间后使用 ProcessBuilder 启动的 Java 应用程序被阻止

java - Spring启动mysql sleep 连接

Java:将整数拆分为 2 个字节,然后将它们再次组合成一个整数

java - 如何只下载 rss 部分

java - android如何从服务器接收数据

java - 为什么 Jersey 要求我在项目中包含 Bean 验证依赖项?

java - Android ICMP ping