треугольник, содержащий как цифры, так и буквы в java

Я хочу написать программу Java, которая печатает специальный треугольник, содержащий как цифры, так и буквы, как уже упоминалось.

Идея состоит в том, что мы сначала начнем с печати числа 1, чтобы построить треугольник. Общее количество строк в треугольнике должно быть получено по количеству букв между заглавной буквой «А» и данной входной буквой верхнего регистра (обе включительно). Затем мы следуем правилу печати букв и цифр по очереди для следующих строк. Критическим моментом здесь является то, что мы пропускаем либо последовательную цифру, либо букву между строками. Например, в строке 3 треугольника мы пропустили букву «В» и напечатали цифру «3». Точно так же мы пропустили значение «2» и вместо этого напечатали букву «A» во второй строке треугольника.

       1
      AAA
     33333
    CCCCCCC
   555555555
  EEEEEEEEEEE
 7777777777777
GGGGGGGGGGGGGGG

person kaycan    schedule 30.04.2021    source источник
comment
У вас есть код, который просто печатает треугольник с одним статическим символом? Потому что это то, с чего я бы начал, если у вас нет этого, напишите это. Затем вы можете добавить небольшой блок кода, который выбирает, какой символ печатать в каждой строке.   -  person Joachim Sauer    schedule 30.04.2021
comment
Нет у меня есть. Я очень новичок в этом вопросе, и я пытаюсь учиться.   -  person kaycan    schedule 30.04.2021
comment
Я не понимаю Нет, я понял. Если у вас этого нет: сначала напишите это (и погуглите, если у вас с этим проблемы, потому что в основном все вопросы по этой теме уже были размещены на SO). Затем, когда у вас будет базовая односимвольная версия, попробуйте применить ее для того, что вы здесь описываете, и задайте конкретный вопрос, если вы не можете заставить ее работать. Прямо сейчас вы в основном просите нас написать все это для вас.   -  person Joachim Sauer    schedule 30.04.2021


Ответы (2)


Печать такого треугольника обычно включает цикл со счетчиком индексов.

Если мы запишем значение счетчика и код ASCII / кодовая точка Unicode для символов, мы можем увидеть шаблон, который мы можем использовать.

       1         0: 49
      AAA        1:    65
     33333       2: 51
    CCCCCCC      3:    67
   555555555     4: 53
  EEEEEEEEEEE    5:    69
 7777777777777   6: 55
GGGGGGGGGGGGGGG  7:    71

Для четных значений индекса мы можем напечатать символ с ASCII-кодом i + 49, а для нечетных значений мы напечатаем i + 64.

В Java 11+ это можно сделать следующим образом. Я оставлю это в качестве упражнения для людей, которые могут исправить себя, если им нужно решение для версий Java до 11.

static void printTriangle(int size) {
    for (int i = 0; i < size; i++) {
        System.out.println(" ".repeat(size - i - 1) +
                           Character.toString(i + (i & 1) * 15 + 49).repeat((i << 1) + 1));
    }
}

Вывод при вызове printTriangle(8)

       1
      AAA
     33333
    CCCCCCC
   555555555
  EEEEEEEEEEE
 7777777777777
GGGGGGGGGGGGGGG

Вывод при вызове printTriangle(10)

         1
        AAA
       33333
      CCCCCCC
     555555555
    EEEEEEEEEEE
   7777777777777
  GGGGGGGGGGGGGGG
 99999999999999999
IIIIIIIIIIIIIIIIIII
person Andreas    schedule 30.04.2021

Вот правильный код:

    Scanner sc = new Scanner(System.in);
    char lastChar = sc.next().charAt(0);   

    int totalLines = lastChar - 'A' + 1;

    for (int i=0; i<totalLines; i++)
    {
        for(int j=1; j<totalLines-i; j++)
            System.out.print(" ");
        
        for (int k=1; k<=2*i+1; k++)
        {
            if (i%2 == 0)
                System.out.print(i+1);
            else
                System.out.print((char)('A'+i-1));
        }
        
        System.out.println();
    }
person javadeveloper44    schedule 30.04.2021