行数 *数
5 5 由于每行*数差值是2,因此得到个固定值必须加2倍行数,上图固定值是156 3 下面代码中输出了9行,可以推算出固定值为19
7 1
先来段VB6的打印菱形
Dim i As Integer For i = 1 To 9 If i > 5 Then Print Space(i - 4); String(19 - 2 * i, "*") Else Print Space(6 - i); String(2 * i - 1, "*") End If Next i再来Java版的:
public class demo2 { public static void main(String[] args) { for (int i = 1; i <=9; i++) { if(i>5){ for (int j=1;j<=i-4;j++){ System.out.print(" "); } for(int k=1;k<=19-2*i;k++){ System.out.print("*"); } System.out.println(""); }else{ for (int j=1;j<=6-i;j++){ System.out.print(" "); } for(int k=1;k<=2*i-1;k++){ System.out.print("*"); } System.out.println(""); } } } }
下面来传统解法,从上到下依次打印等腰三角形,再打印倒三角形:
public class demo{ public static void main(String[] args) { for(int i=1;i<=4;i++){ for (int k=1;k<=4-i;k++){ System.out.print(" "); } for (int j=1;j<=2*i-1;j++){ System.out.print("*"); } System.out.println(""); } for (int i1 = 1; i1 <=3; i1++) { for (int k=1;k<=i1;k++){ System.out.print(" "); } for (int j=1;j<=7-2*i1;j++){ System.out.print("*"); } System.out.println(""); } } }可以看出微软自带的方法确实精简了不少代码,至于Java就定义两个方法再打印个菱形吧:
public class demo2 { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { if (i > 5) { Space(i - 4);Star(19 - 2 * i); } else { Space(6 - i);Star(2 * i - 1); } } } public static void Space(int s) { for (int i = 0; i < s; i++) { System.out.print(" "); } } public static void Star(int s1) { for (int i = 0; i < s1; i++) { System.out.print("*"); } System.out.println(""); } }