2012-01-22 7 views
3
for(int i = 1; i < 12; i++) 
{ 
     for(int k=11; k > i; k--) 
     { 
       System.out.print("*"); 

     } 
     System.out.print("\n"); 
} 

У меня есть код выше, который отображает дизайн, как это:Java Графический дизайн петли

********** 
********* 
******** 
******* 
****** 
***** 
**** 
*** 
** 
* 

Я желающему поменять его, так что он выглядит следующим образом:

********** 
********* 
    ******** 
    ******* 
    ****** 
    ***** 
     **** 
     *** 
     ** 
     * 

I знаю, что мне нужно использовать цикл и System.out.print (""), чтобы оставить пробелы.

Какой лучший подход к использованию? Я создал два отдельных цикла, но со следующими командами строки это не будет работать в двух циклах. Как бы интегрировать это в один цикл?

+1

Как насчет печатных пространств, затем n- (количество напечатанных пробелов) звездочек? –

+0

Я забыл добавить, я могу использовать System.out.print ("*"), System.out.print ("") и system.out.print ("\ n"). – Brandon

+0

Поскольку это домашнее задание, включите еще одну ценную концепцию в программировании: функции. Напишите функцию, которая печатает символ 'n' раз, например,' repeat (char c, int times) {...} '. Затем для каждой строки вы будете вызывать функцию один раз для пробелов и один раз для звездочек. –

ответ

2

Для второй «картинки»: вам нужно напечатать переменное количество пробелов до «*». Это можно сделать, используя другой цикл до цикл, который печатает «*», и зная, что каждый раз, когда вы печатаете строку, количество напечатанных пробелов увеличивается на единицу, а число звездочек уменьшается на единицу.

EDIT:

Вот подсказка, чтобы вы начали. Заполните пробелы (и удалите комментарии):

int delta = /*fill*/; 
for (int i = 0; i < /*fill*/; i++) { 
    for (int j = 0; j < /*fill*/; j++) { 
     System.out.print(" "); 
    } 
    for (int j = 0; j < /*fill*/; j++) { 
     System.out.print("*"); 
    } 
    delta += /*fill*/; 
    System.out.print("\n"); 
} 
+0

После печати пробелов есть ли какая-либо команда, чтобы вернуться к началу? – Brandon

+0

Нет, вы не вернетесь наверх, сначала вы печатаете пробелы, затем звездочки, затем разрыв строки - и это завершает одну строку. Самая внешняя петля вернет вас «наверх», чтобы вы могли справиться со следующей строкой. –

+0

Мне нравится концепция заполнения пробелов;) – jjczopek

0

Используйте String.format, чтобы левая панель заполнила вашими пробелами.

+0

OP сказал, что он может использовать 'System.out.print()', поэтому 'String.format()' не может быть и речи. –

+0

Уверен, но эта информация была включена в комментарии, а не вопрос. – diggingforfire

-1

Сделайте это с использованием 2-мерного массива !!! Это очень просто и эффективно!

Для второго результата: - Поместите '*' в местах, если row_no < = column_no (полуматрица над диагональю плюс диагональные элементы), иначе место «» в других местах. Запустите это в циклах для строки и столбца. Затем напечатайте 2-мерную строку массива.

+0

Вы можете использовать блоки кода 'для обозначения фрагмента кода. Форматирование тоже очень приятно. Вы можете использовать их, окружая текст обратными окнами (\ '). – PlasmaPower

Смежные вопросы