Что я неправильно понимаю в коде, который печатает пирамиду?

#java #character

#java #символ

Вопрос:

Предполагается, что мой код создает прямолинейность. Однако приведенный ниже пример должен содержать другой A символ в конце, как и во втором примере.

 ABCDDCBA
 ABCCBA
  ABBA
   AA

ABCDDCBA
 ABCCBA
  ABBA
   AA
   A 
  

Это мой код. Он начинается с ABCDDCBA и каждый раз удаляет символы в середине. Так ABCDDCBA было бы ABCCBA , если бы Ds удалялся. Однако, когда есть два символа (всегда одни и те же), предполагается, что код удаляет один, но это не так.

 public static void pyramid(int n) 
{ 
    int i, j, num, gap; 

    // outer loop to handle number 
    // of rows n in this case 
    for (i = n; i >= 0; i--) { 

        // inner loop to create right triangle 
        // gaps on left side of pyramid 
        for (gap = n - 1; gap >= i; gap--) { 
            System.out.print(" "); 
            System.out.print(" "); 
        } 

        // initializing value corresponding to ASCII value of 'A'  
        num = 'A'; 

        // loop to print characters on 
        // left side of pyramid 
        for (j = 1; j <= i; j  ) { 
            System.out.print((char)num     " "); 
        } 

        // loop to print characters on 
        // right side of pyramid 
        for (j = i - 0; j >= 1; j--) { 
            System.out.print((char)--num   " "); 
        } 

        System.out.println(""); 
    }
}
public static void main(String[] args) 
{ 
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt(); 
    pyramid(n); 

} 
  

Пожалуйста, помогите мне. : (

Ответ №1:

У вас опечатка в вашем коде:

 for (j = i - 0; j >= 1; j--) {
  

должно быть

 for (j = i - 1; j >= 1; j--) {