#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 существуют разные подходы, и я не знаю, лучше ли один из них, чем другой. Обычно это вопрос личных предпочтений. Я не думаю, что эффективность здесь имеет значение.