java控制台图形打印经典练习

gpwoaibiancheng 2011-03-29 07:52:24
控制台图形打印

一、 背景描述
当老师讲述标准输出以后,可以开始本练习项目的部署安排。安排本练习的主要目的练习标准输出,并结合数学知识练习if,for等循环控制块。
二、 实现要求
前期可以不要求用函数实现,面向过程讲述完毕后必须用static函数封装。

三、 实现技术
a) 熟练掌握System标准输出
b) 熟练掌握If与for等循环控制块
c) 熟练掌握函数的封装,并养成过程封装的编码习惯。
d) 项目经理注意:在Tarena课程中没有Console的内容,项目经理要扩展讲述Console的格式输出。后面在讲述Format相关类的时候就相当方便。
四、 类图
a) 类图

b) 类图说明
1. rect函数
函数原型 public static void rect(int height,int width);
函数说明 打印一个指定高,宽的空心矩形。
参数说明 int height:空心矩形的高度
int width:空心矩形的宽度
返回说明 无
异常说明 无
流程原理 确定矩形的四条边的方程:
x=0,y=0,x=width-1,y=height-1
用程序描述:
x==0||y==0||x==width-1||y==height-1
调用实例 绘制高为5,宽为20的空心矩形。
ConsoleShape.rect(5,20);
调用效果

2. solidRect函数
函数原型 public static void solidRect(int height,int width);
函数说明 打印一个指定高,宽的实心矩形。
参数说明 int height:实心矩形的高度
int width:实心矩形的宽度
返回说明 无
异常说明 无
流程原理 确定实心矩形的四条分界边的方程:
x>=0,y>=0,x>=width-1,y>=height-1
用程序描述这四个方程:
x>=0&&y>=0&&x>=width-1&&y>=height-1
调用实例 绘制高为5,宽为20的空心矩形。
ConsoleShape.solideRect(5,20);
调用效果

3. upperTriangle函数
函数原型 public static void upperTriangle(int height,int width,boolean type);
函数说明 打印一个指定高,宽,类型的空心上三角形。
参数说明 int height:实心三角形的高度
int width:实心三角形的宽度
boolean type:三角形的类型,true为右三角,false为左三角
返回说明 无
异常说明 无
流程原理 根据类型确定三角形的三条边的方程:
右上三角:
y*width==x*height
x==width-1
y==0
左上三角:
y*width==-1*x*height+width*(height-1)
x==0
y==0
调用实例 ConsoleShape. upperTriangle (20,20);
调用效果

4. lowerTriangle函数
函数原型 public static void lowerTriangle (int height,int width,boolean type);
函数说明 打印一个指定高,宽的空心下三角形。
参数说明 int height:实心三角形的高度
int width:实心三角形的宽度
boolean type:三角形的类型,true为左三角,false为右三角
返回说明 无
异常说明 无
流程原理 根据类型确定三角形的三条边的方程:
右下三角:
y*width==-1*x*height+width*(height-1)
x==width-1
y==height-1
左下三角:
y*width==x*height
x==0
y==height-1
调用实例 ConsoleShape. lowerTriangle (20,20);
运行效果

5. solidUpperTriangle函数
函数原型 public static void solidUpperTriangle (int height,int width,boolean type);
函数说明 打印一个指定高,宽的实心上三角形。
参数说明 int height:实心三角形的高度
int width:实心三角形的宽度
boolean type:三角形的类型,true为右三角,false为左三角
返回说明 无
异常说明 无
流程原理 根据类型确定三角形的三条边界的方程:
右上三角:
y*width<=x*height
x<=width-1
y>=0
左上三角:
y*width<=-1*x*height+width*(height-1)
x>=0
y>=0
调用实例 ConsoleShape. solidUpperTriangle (20,20);
运行效果

6. solidLowerTriangle函数
函数原型 public static void solidUpperTriangle (int height,int width,boolean type);
函数说明 打印一个指定高,宽的实心下三角形。
参数说明 int height:实心三角形的高度
int width:实心三角形的宽度
boolean type:三角形的类型,true为右三角,false为左三角
返回说明 无
异常说明 无
流程原理 根据类型确定三角形的三条边界的方程:
右下三角:
y*width>=-1*x*height+width*(height-1)
x<=width-1
y<=height-1
左下三角:
y*width>=x*height
x>=0
y<=height-1
调用实例 ConsoleShape. solidLowerTriangle (20,20);
运行效果

7. diamond函数
函数原型 public static void diamond (int height,int width);
函数说明 打印一个指定高,宽的空心菱形。
参数说明 int height:空心菱形的高度
int width:空心菱形的宽度
返回说明 无
异常说明 无
流程原理 根据给定的宽、高确定菱形的四个顶点
p1(width/2,0), p2(0,height/2), p3(width/2,height), p4(width,height/2)
根据直线的两点式确定菱形的四条边的方程为:
y*-1*width=(x-width/2)*height
(y-height/2)*width=x*height
(y-height)*width=(x-width/2)*-1*height
y*width=(x-width/2)*height
调用实例 ConsoleShape. diamond (30,30);
运行效果

8. solidDiamond函数
函数原型 public static void solidDiamond (int height,int width);
函数说明 打印一个指定高,宽的实心菱形。
参数说明 int height:实心菱形的高度
int width:实心菱形的宽度
返回说明 无
异常说明 无
流程原理 根据给定的宽、高、确定菱形的四条边界的方程为:
y*-1*width<=(x-width/2)*height
(y-height/2)*width<=x*height
(y-height)*width<=(x-width/2)*-1*height
y*width>=(x-width/2)*height
调用实例 ConsoleShape.solidDiamond(20,20);
运行效果

9. multiTable乘法表
函数原型 public static void multiTable ();
函数说明 打印九九乘法表
参数说明 无
返回说明 无
异常说明 无
流程原理 两层嵌套循环,外层i从1-9,内层j从1-i
调用实例 ConsoleShape. multiTable (5,20);
运行效果

10. complexShape复杂图形
函数原型 public static void complexShape (int height,int width);
函数说明 打印一个由两个三角形组成的复杂图形
参数说明 int height:空心菱形的高度
int width:空心菱形的宽度
返回说明 无
异常说明 无
流程原理 可以认为该图形是由两个三角形组成,据给定的宽高确定复杂图形的六个顶点
pa1(width/2,0), pa2(0,height*2/3), pa3(width,height*2/3),
pb1(width/2,h), pb2(0,height/3), pb3(width,height/3),
该图形的六条边界的方程为(程序描述):
(-3*y*width<=(2*x-width)*height*2&&
3*y<=height*2&&
3*y*width>=(2*x-width)*height*2)||(
-3*(y-height)*width>=(2*x-width)*height*2&&
3*y>=height&&
3*(y-height)*width<=(2*x-width)*height*2)
调用实例 ConsoleShape. complexShape (60,60);
运行效果

五、 技术技巧提问
a) 编程与数学逻辑模型的关系。
1. 图形==几何模型。
2. 递归==通项表达式模型。

六、 附加说明:
a) 注释严格按JavaDoc的标准书写。并用JavaDoc抽取作为学生的项目参考。在学生项目未完成前,不提供源代码参考,只提供JDK参考。注释的书写按上面表格的要求项注释。
b) 程序打包成jar文件。
c) 表格中的流程原理:能用流程图表达就用流程图,不能使用流程图可以使用文本描述实现原理,或用伪代码描述实现过程。
...全文
1631 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqfddqr 2011-03-30
  • 打赏
  • 举报
回复
练手的?
聆听随风 2011-03-29
  • 打赏
  • 举报
回复
执行的版本号?
fengke01242010 2011-03-29
  • 打赏
  • 举报
回复
找点东西练手也好
gpwoaibiancheng 2011-03-29
  • 打赏
  • 举报
回复
这不是老师布置要求完成的作业,只是供大家练手用的。
学会生活 2011-03-29
  • 打赏
  • 举报
回复
神马情况,作业贴还是练手贴?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧