繁体   English   中英

打印带有字符的直角三角形

[英]Print right angle triangle with characters

我想创建一个由字符组成的直角三角形。 该代码询问您希望三角形为多少行,当然最大为26。 测试代码时,我输入5(无缘无故)。 到目前为止,这是我的代码:

import java.util.*;

public class Uppgift3 {
    public static void main (String [] args) {

        Scanner input = new Scanner (System.in);

        System.out.print("Ange längden på de 2 lika långa sidorna (avsluta med -1): ");
        int rader = input.nextInt();

        int i = 0;
        int j = 0;
        int k = 0;
        char bokstav = (char)( i + 'A');

        for (i=0; i<rader; i++) {
            for (j=0; j<i+1; j++) {
                System.out.print(bokstav);

            }bokstav++;
            System.out.println();

        }

    }

}

这是我需要的输出(如果输入5):

A
AB
ABC
ABCD
ABCDE

这是我在上面的代码中输入5时得到的结果:

A
BB
CCC
DDDD
EEEEE

有人可以帮帮我吗? 我是在正确的轨道上,还是我完全迷路了? 感觉就像后者...是的,这是上学的。 我已尽力而为,但现在陷入困境。

非常感激!

您没有在正确的位置增加bokstav变量。 另外,您将需要按行重置它。

尝试这个:

public static void main (String [] args)
{

    Scanner input = new Scanner (System.in);

    System.out.print("Enter the amount of rows your want: ");
    int rows = input.nextInt();

    char bokstav = 'A';

    for(int i=0; i<rows; i++)
    {
        for(int j=0; j<i+1; j++)
        {
            System.out.print(bokstav);
            bokstav++;
        }

        bokstav = 'A';
        System.out.println();

    }

}

解决方案的问题是,仅在写入每一行之后才增加字符; 每个字符写入后,您应该增加字符。 成功写入行后,应将字符重置为“ A”。

    for (int i = 0; i < 5; i++) {
        char c = 'A';
        for (int j = 0; j < i+1; j++) {
            System.out.print(c);
            c++;
        }
        System.out.println();
    }

我还将指出,这种解决方案不是 递归的 递归方法的一个简单定义就是调用它自己来找到问题的较小部分的解决方案。 例如,打印类似金字塔的递归解决方案看起来像这样。

public static void print(int level) {
    if (level <= 0 || level > 26) {
        return;
    }
    print(level - 1);
    System.out.println(line(level));
}

public static String line(int level) {
    String line = "";
    if (level > 0 && level <= 26) {
        line = line(level--) + (char)('A' + level);
    }
    return line;
}

尝试这个:

char bokstav = 'A';

for (i=0; i<rader; i++) {
    bokstav = 'A';
    for (j=0; j<i+1; j++) {
        System.out.print(bokstav++);
    }
    System.out.println();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM