我想创建一个看起来像盒子的图案。

我尝试了所有反射和镜像,但无法实现精确的循环。

它的框看起来像String s="ROHIT";的循环

最佳答案

这可以满足您的要求(想法是检查您所处的内部高度):

public static void main(String[] args) {
    String s = "ROHIT";
    int size = s.length() * 2;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if ((j > i && size - j > i) || (size - j > size - i && j >= size - i)) {
                print(s, i);
            } else {
                print(s, j);
            }
        }
        System.out.println("");
    }
}

private static void print(String s, int i) {
    if (i < s.length()) {
        System.out.print(s.charAt(i));
    } else {
        System.out.print(s.charAt(s.length() - i % s.length() - 1));
    }
}


实际上,这更直观:

public static void main(String[] args) {
    String s = "ROHIT";
    int size = s.length() * 2;
    int max = s.length();
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            int level = Math.min(normalize(i, max), normalize(j, max));
            System.out.print(s.charAt(level));
        }
        System.out.println("");
    }
}

private static int normalize(int i, int max) {
    return (i >= max) ? 2 * max - i - 1: i;
}

关于java - Java中的框类型模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14769458/

10-10 13:22