2021/3/21算法题打卡-打印菱形

打印菱形

题目

打印菱形

给出菱形的边长,在控制台上打印出一个菱形来。
为了便于比对空格,我们把空格用句点代替。
当边长为8时,菱形为:
.......*
.......
........
.........
..........
...........
............
.............
............
...........
..........
.........
........
.......
.......*

下面的程序实现了这个功能,但想法有点奇怪。
请仔细分析代码,并填写划线部分缺失的代码。

public class T5打印菱形 {

public static void f(int n){
String s = "";
for(int i=0; i<2
n-3; i++)
s += ".";
s += "";
String s1 = s + "\n";
String s2 = "";
for(int i=0; i<n-1; i++){
//System.out.println("=>"+s);
s = "." + _____________________________________ + "
"; //填空
s1 = s + "\n" + s1;
s2 += s + "\n";
}
System.out.println(s1+s2);
}

public static void main(String[] args){
f(8);
}

}

分析

这是一道填空题,填空题的做法有很多
我们可以先将需要填空的代码注释掉,然后进行debug来进行读代码,从而知道需要填空的部分是要完成什么任务
本题,我们可以看出来,s1是菱形的上部分,s2是菱形的下部分,而他们都是从s得到结果,所以s就是菱形中的每一行

代码

public class T5打印菱形 {

    public static void f(int n){
        String s = "*";
        for(int i=0; i<2*n-3; i++)
            s += ".";
        s += "*";
        String s1 = s + "\n";
        String s2 = "";
        for(int i=0; i<n-1; i++){
            //System.out.println("=>"+s);
//            s = "." + _____________________________________ + "*";  //填空
            s = "." + s.substring(0,12-i) + "*";//填空
//            s = "." + s.substring(0, s.length()-3) + "*";//填空
            s1 = s + "\n" + s1;
            s2 += s + "\n";
        }
        System.out.println(s1+s2);
    }

    public static void main(String[] args){
        f(8);
    }

}
posted @ 2021-03-23 10:34  唐坣  阅读(55)  评论(0)    收藏  举报