开发者

Java algorithm to make a straight pyramid [closed]

Closed. This question needs debugging details. It is not currently accepting answers.

Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.

Closed 8 years ago.

Improve this question
___________1
__________1 2 1
_________1 2 3 2 1
________1 2 3 4 3 2 1
______1 2 3 4 5 4 3 2 1
_____1 2 3 4 4 4 4 4 3 2 1
___1 2 3 3 3 3 3 3 3 3 3 2 1
__1 2 2 2 2 2 2 2 2 2 2 2 2 2 1
_1 1 1 1 1开发者_JAVA百科 1 1 1 1 1 1 1 1 1 1 1 1

I would like to create this pyramid using java? Any suggestion?


This should do it:

public class Tower {
    public static void main(String[] args) {
        System.out.println("                 1                 ");
        System.out.println("               1 2 1               ");
        System.out.println("             1 2 3 2 1             ");
        System.out.println("           1 2 3 4 3 2 1           ");
        System.out.println("         1 2 3 4 5 4 3 2 1         ");
        System.out.println("       1 2 3 4 4 4 4 4 3 2 1       ");
        System.out.println("     1 2 3 3 3 3 3 3 3 3 3 2 1     ");
        System.out.println("   1 2 2 2 2 2 2 2 2 2 2 2 2 2 1   ");
        System.out.println(" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ");
    }
}


Try using a mono-spaced font like courier.


This will surve the purpose. You can change the number 5 to another number other than 5. eg. 1,2,3,.. , 6,8

public static void main(String[] args) {


    List<String> list = new LinkedList<String>();

    for(int i = 5; i > 0; i-- ){
        wrapWithNumber(list, i);
    }


    for (String string : editListToBeInTriangleShape(list)) {
        System.out.println(string);
    };
}

/**
      * Wrap the number strings in the llist with a perticular number.
 * @param list list of Strings
 * @param ba number which need to wrapp the list with.
 */
private void wrapWithNumber(List<String> list, final int ba) {

    list.add(0, String.format("%d",ba));

    for (int i = 1; i < list.size(); i++) {
        String newformat = "%1$d " + list.get(i) + " %1$d";
        list.remove(list.get(i));
        list.add(i,String.format(newformat, ba));
    }

    String lastFormat = "%1$d";
    for(int i = 0; i < 2 * list.size();i++){
        lastFormat += " %1$d";
    }

    if(list.size() != 1) {
        list.add(String.format(lastFormat, ba));
    }
}

/**
 * Arrage the Strings in the list in triangular manner.
 * @param list list of Strings.
 */
private List<String> editListToBeInTriangleShape(final List<String> list) {

    final List<String> returnList = new LinkedList<String>();

    for (int i = list.size(); i > 0; i--) {
        String s = list.get(list.size()-i);
        int possition = list.size()*2 + s.length()/2;
        returnList.add(String.format("%"+possition+"s", s));
    }

    return returnList;
}

out put of this :

                 1
               1 2 1
             1 2 3 2 1
           1 2 3 4 3 2 1
         1 2 3 4 5 4 3 2 1
       1 2 3 4 4 4 4 4 3 2 1
     1 2 3 3 3 3 3 3 3 3 3 2 1
   1 2 2 2 2 2 2 2 2 2 2 2 2 2 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1


I would suggest a series of for loops.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜