0
点赞
收藏
分享

微信扫一扫

Java4Android自学记录(8-3):练习课 - 打印特殊图案

互联网码农 2022-02-08 阅读 41


1 目录及资源索引

  Java4Android自学过程目录及资源索引

2 题目及练习

  题目:在命令行当中打印出如下图形

*
* *
* * *
* * * *

  按照老师讲解的步骤一步一步来操作:


  1. 定义一个类,名字随意;
  2. 在类当中定义一个主函数;
  3. 使用 for 循环 打印4行,每行一个 “*”
  4. 把一个 星号 看做一个 (星号 + 空格);
  5. 打印4行,第一行一个,第二行2个,第三行3个,以此类推
  6. 在打印 “* ” 之前要先打印空格,第一行3个,第二行2个,以此类推。即一共n行,第一行 n-1 个,第二行 n-2 个。
  7. 需要注意一点,原来用的打印,是 println ,是换行打印,用在此处可能要出问题。可以用 print ,就好了。

  第一次尝试,代码如下:

class TestTriangle
{
public static void main(String args[])
{
for(int i = 0; i < 4; i++) // 行数
{
for(int j = 0; j < 4; j++) // 列
{
System.out.print("* "); // 打印 *
}
System.out.print("");
}
}
}

  运行结果如下,发现有点不太对,要的是4行,每行4个星号,但是我这个全打印到一行上边了,观察一下代码,发现在行数那个 for 循环中,忘记换行了。

Java4Android自学记录(8-3):练习课 - 打印特殊图案_算法

  又对代码做了部分修改调整,调整后的代码如下:

class TestTriangle
{
public static void main(String args[])
{
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 4; j++)
{
System.out.print("* ");
}
System.out.print("\n"); // 此处增加每一行结束后的换行
}
}
}

  运行结果如下:

Java4Android自学记录(8-3):练习课 - 打印特殊图案_java_02

  现在距离我们想要的结果还是有一点点距离,我们再进一步的调整代码:

class TestTriangle
{
public static void main(String args[])
{
for(int i = 1; i <= 4; i++)
{
for(int j = 0; j < i; j++) // 修改列数,第一行小于1,依次类推
{
System.out.print("* ");
}
System.out.print("\n");
}
}
}

  运行结果如下:

Java4Android自学记录(8-3):练习课 - 打印特殊图案_算法_03

  有点接近,但是还不是我们想要的,再来观察一下这个跟最终想要的结果之间的联系,第一行,1个星号,但是开头有3个空格;第二行有2个星号,开头有2个空格;第三行有3个星号,开头有1个空格;第四行有4个星号,开头有0个空格。有没有发现一点规律,一共4行,第一行1个星号,3个空格;一共4行,第二行2个星号,2个空格;一共4行,第三行3个星号,1个空格;一共4行,第四行4个星号,0个空格。 规律是不是很明显了?下边再次修改代码:

class TestTriangle
{
public static void main(String args[])
{
for(int i = 1; i <= 4; i++)
{
for(int j = 0; j < (4 - i); j++) // 打印每行开始的空格,个数为总行数减星号个数。
{
System.out.print(" ");
}

for(int j = 0; j < i; j++) // 打印星号,和上边的空格在同一行
{
System.out.print("* ");
}
System.out.print("\n"); // 一行结束后,再换行
}
}
}

  运行结果如下,此次终于成功了,哈哈哈哈

Java4Android自学记录(8-3):练习课 - 打印特殊图案_程序代码_04

3 扩展题目

  自己根据上述特殊形状,想到了打印出一个菱形出来,其实就是上边那三行,在对称下来,自己测试的代码如下:

class TestTriangle
{
public static void main(String args[])
{
for(int i = 1; i <= 4; i++) // 菱形上半部分 for 循环
{
for(int j = 0; j < (4 - i); j++) // 每一行前的空格
{
System.out.print(" ");
}

for(int j = 0; j < i; j++) // 打印出每一行的星号
{
System.out.print("* ");
}
System.out.print("\n"); // 每一行结束,要换行
}
for(int i = 1; i <= (4 - 1); i++) // 菱形下半部分 for 循环,注意最长那行不算
{
for(int j = 0; j < i; j++)
{
System.out.print(" "); // 每一行前边的空格,和上半部分刚好相反
}

for(int j = 0; j < 4 - i; j++)
{
System.out.print("* "); // 每一行的星号
}

System.out.print("\n"); // 每一行结束后,进行换行
}
}
}

  程序运行结果如下:

Java4Android自学记录(8-3):练习课 - 打印特殊图案_程序代码_05

  哈哈,虽然成功了,但是程序优化空间还是很大的。继续努力。

4 课后作业

  老师在这节课结束时,留了课后作业,题目如下:

1、如果要求大家编写一个程序,可以打印出任意行的与本题类似的图形,应该怎么做?
2、优化上一个求素数的程序代码。(这个暂时还没想好,我自己的程序已经做了部分优化)

5 总结


  1. 学会了打印特殊图案的步骤;
  2. 进一步熟悉了 for 循环的使用方法;
  3. 还需要更加熟练,在对一些代码思路上,理解还不是很到位,有的时候就是考虑不到。看来还要多写才行;
  4. 这样一步一步测试,一步一步调试出想要的结果,感觉很好,继续努力~


举报

相关推荐

0 条评论