java 打印金字塔和菱形
注释:关键是要找出星星与空格和行数之间的关系,这里就不多说了,纯属数学问题啦,直接上代码。
import java.util.Scanner;public class PrintDiamond {/** * @param args * @since 1.0 08/23/11 */public static void main(String[] args) {Scanner sc = new Scanner(System.in);int row = 0;// to get a odd numberdo {System.out.println("Enter the oddNumber of half left-alignment diamond(odd number):");row = sc.nextInt();} while (row % 2 == 0);leftDiamond(row);System.out.println();rightDiamond(row);System.out.println();topDiamond(row);System.out.println();bottomDiamond(row);System.out.println();diamond(row);}private static void leftDiamond(int oddNumber) {for (int i = 1; i <= oddNumber; i++) {for (int j = 0; j < oddNumber - Math.abs(oddNumber + 1 - 2 * i); j++)System.out.print("*");System.out.println();}}private static void rightDiamond(int oddNumber) {for (int i = 1; i <= oddNumber; i++) {for (int j = 0; j < Math.abs(oddNumber + 1 - 2 * i); j++)System.out.print(" ");for (int j = 0; j < oddNumber - Math.abs(oddNumber + 1 - 2 * i); j++)System.out.print("*");System.out.println();}}private static void diamond(int oddNumber) {for (int i = 1; i <= oddNumber; i++) {for (int j = 0; j < Math.abs((oddNumber + 1) / 2 - i); j++)System.out.print(" ");for (int k = 0; k < oddNumber - Math.abs(oddNumber + 1 - 2 * i); k++)System.out.print("*");System.out.println();}}private static void topDiamond(int oddNumber) {for (int i = 1; i <= oddNumber; i++) {for (int k = 0; k < oddNumber - i; k++)System.out.print(" ");for (int j = 0; j < 2 * i - 1; j++)System.out.print("*");System.out.println();}}private static void bottomDiamond(int oddNumber) {for (int i = oddNumber; i >= 1; i--) {for (int k = 0; k < oddNumber - i; k++)System.out.print(" ");for (int j = 0; j < 2 * i - 1; j++)System.out.print("*");System.out.println();}}}
结果:
http://screencast.com/t/grtbEDpv