行数 *数
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("");
}
}