Programming Basics with Java - Drawing-with-Loops - Diamond
Колеги,
Макар че се сборих със задачата, ще приложа моето решение по-долу, ми се струва че това далеч не е най-доброто решение. Моля за коментари и ако някои има по-добри идеи.
import java.util.Scanner; public class Diamond { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = Integer.parseInt(scanner.nextLine()); int rows = num; int leftRight = (num - 1) / 2; //1 int mid = num - 2 * leftRight - 2; //-1 int lines = 0; if (num % 2 == 0) { for (int i = 0; i < (num / 2); i++) { System.out.println(repeatStr("-", ((num - 2) / 2) - i) + "*" + repeatStr("-", 2 * i) + "*" + repeatStr("-", ((num - 2) / 2) - i)); } for (int i = (num / 2) - 2; i >= 0; i--) { System.out.println(repeatStr("-", ((num - 2) / 2) - i) + "*" + repeatStr("-", 2 * i) + "*" + repeatStr("-", ((num - 2) / 2) - i)); } } else { for (int i = 0; i < (num / 2); i++) { if (i == 0) { System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", ((num - 1) / 2) - i)); } else { System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", 2 * i - 1) + "*" + repeatStr("-", ((num - 1) / 2) - i)); } } if (num == 1) { System.out.println("*"); } if (num > 1) { System.out.println("*" + repeatStr("-", num - 2) + "*"); } for (int i = (num / 2) - 1; i >= 0; i--) { if (i == 0) { System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", ((num - 1) / 2) - i)); } else { System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", 2 * i - 1) + "*" + repeatStr("-", ((num - 1) / 2) - i)); } } } } static String repeatStr(String str, int count) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < count; i++) { sb.append(str); } return sb.toString(); } }