Что я неправильно понимаю с кодом, который печатает пирамиду? - PullRequest
0 голосов
/ 08 марта 2019

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

ABCDDCBA
 ABCCBA
  ABBA
   AA

ABCDDCBA
 ABCCBA
  ABBA
   AA
   A 

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

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 Ответ

0 голосов
/ 08 марта 2019

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

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

должно быть

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