Почему моя программа печатает следующую строку в месте, которое я не просил?

#java #loops #triangle

Вопрос:

В принципе, я должен напечатать 2 трейлинга, перевернуть вверх дном, застегнуть один вверх дном. Они оба одинаковые, моя программа работает нормально, но по какой-то причине мой второй треугольник слегка наклоняется вправо. Кто-нибудь может, пожалуйста, объяснить мне, как исправить и почему происходит эта ошибка?

 public static void main(String[] args) {  Scanner s = new Scanner(System.in);   System.out.println("Enter number");  int num = s.nextInt();    for (int i = 0; i lt; num; i  ) {  for (int j = num; j gt; i; j--) {  System.out.print("*");  System.out.print(" ");  }    System.out.println();    for (int k = 0; k lt;= i; k  ) {  System.out.print(" ");  }  }   // second part      for (int i = 0; i lt; num; i  ) {  for (int j = 0; j lt;= i; j  ) {  System.out.print("*");  System.out.print(" ");  }    System.out.println();    for (int k=num; kgt;i; k-=2) {  System.out.print(" ");  }  }  } }  * * *   * *   *   *   * *   * * *   

Ответ №1:

Пара небольших изменений:

  • в конце первого внешнего цикла for
  • во втором внешнем контуре в конце

Смотрите комментарии к коду ниже

 for (int i = 0; i lt; num; i  ) {  for (int j = num; j gt; i; j--) {  System.out.print("*");  System.out.print(" ");  }    System.out.println();    for (int k = 0; k lt; i; k  ) { // stop condition changed  System.out.print(" ");  }  if (i lt; num -1) { // this was added  System.out.print(" ");  }  }   // second part    for (int i = 0; i lt; num; i  ) {  for (int j = 0; j lt;= i; j  ) {  System.out.print("*");  System.out.print(" ");  }    System.out.println();    for (int k=num-1; kgt;i 1; k-=1) { // stop condition change  System.out.print(" ");  }  }  

Комментарии:

1. Большое вам спасибо, это может быть несвязанный вопрос, но подходит ли мой подход к этому вопросу в целом? или это очень неэффективно или неуместно. Еще раз большое вам спасибо! Счастливых праздников

2. @dudex198 существуют разные подходы, и я не знаю, лучше ли один из них, чем другой. Обычно это вопрос личных предпочтений. Я не думаю, что эффективность здесь имеет значение.