Java算法制作直金字塔

___________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 

我想用java创建这个金字塔? 有什么建议吗?

这将调查目的。 您可以将数字5更改为5以外的其他数字。例如 1,2,3,..,6,8

 public static void main(String[] args) { List list = new LinkedList(); 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 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 editListToBeInTriangleShape(final List list) { final List returnList = new LinkedList(); 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; } 

出来这个:

  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 

这应该这样做:

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

尝试使用像信使一样的单倍间距字体。

我会建议一系列for循环 。