Веселье с Явой - Нарисуй Бриллиант
Недавно я нашел интересный запрос от студента Java на одном из прочитанных форумов. Его класс попросили использовать цикл for, чтобы нарисовать алмаз из звездочек (*). У него было правильное и функциональное решение, но оно было отмечено, потому что оно было слишком сложным и включало несколько циклов. Студент попросил предложения о более простых способах достижения того же результата. Я подумал, что это интересная проблема, и решил попробовать свои силы в этом. Моя программа ниже (или вы можете скачать копию здесь.) Это явно не рабочий код - с одной стороны, хотя мне нравится простота оператора?: Я стараюсь не использовать его в рабочем коде, потому что многие программисты считают, что это затрудняет чтение и понимание. Не говоря уже о том, что этот код сломается, если Максимальная ширина изменено на число больше 46. Но это пример довольно компактного и логичного метода для достижения желаемого результата. Вы можете сделать лучше? Отчитайтесь на нашем форуме.

/*
 * diamonds.java
 *
 * Создано 4 июня 2007 г., 23:39
 */

/**
 *
 * @author Джули Баумлер
 */
алмазы публичного класса {

/ ** Создает новый экземпляр бриллиантов * /
общедоступные алмазы () {
}

/**
* @param args аргументы командной строки
*/
public static void main (String [] args) {
int max_width = 9; // количество символов в ширину, чтобы сделать бриллиант
int width = max_width% 2 == 0? max_width / 2: max_width / 2 +1;
Звезды струны = "********************************************** «;
Строковые пробелы = "";
для (int i = 1; i <(ширина * 2); i ++) {
System.out.print (spaces.substring (0, (i <ширина? Ширина -i: i% ширина)));
System.out.println (stars.substring (0,2 * (i <= width? I: width- (i% width)) - 1));
}

}

}

Оригинальный запрос:
Pinimo. «Помоги мне с Java (SIC).» Онлайн постинг. Неделя от 13 мая 2007 года. Обсуждение Java (Форум). 4 июня 2007 г.

Видео инструкция: ЧЕЛЛЕНДЖ НАРИСУЙ ЗАКРЫТЫМИ ГЛАЗАМИ Вызов за 20 сек Развлечение / Вики Шоу (January 2022).