Професионална програма
Loading...
st.penchev avatar st.penchev 3 Точки

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();
    }

}
Тагове:
0
Programming Basics