Java趣味编程100例

上传人:笛音 文档编号:25879008 上传时间:2017-12-19 格式:DOC 页数:20 大小:370KB
返回 下载 相关 举报
Java趣味编程100例_第1页
第1页 / 共20页
Java趣味编程100例_第2页
第2页 / 共20页
Java趣味编程100例_第3页
第3页 / 共20页
Java趣味编程100例_第4页
第4页 / 共20页
Java趣味编程100例_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《Java趣味编程100例》由会员分享,可在线阅读,更多相关《Java趣味编程100例(20页珍藏版)》请在金锄头文库上搜索。

1、第 1 章 变幻多姿的图表图表简洁直观,在各种场合得到广泛应用,给人以很强的视觉冲击,经常让人难以忘怀。我们的程序中如果能够灵活地应用图表,一定能给我们的程序增色不少。本章将带你进入变换多姿的图表世界,体会图表编程带来的乐趣。1.1 金字塔图案1问题描述打印出金字塔图案,如图 1.1 所示。2问题分析这个问题是一个很经典的循环应用的题目。我们都知道,打印输出的时候,都是从最左端输出,而这里,第一个星号是在中间。这实际是因为星号之前有很多空格。当我们使用问号来表示空格,实际的输出效果应该是图 1.2 的形式。图 1.1 金字塔 图 1.2 金字塔的分析图从图 1.2 分析,我们就可以发现这个题目

2、的奥秘了。(1)确定程序框架从图 1.2 中,我们可以发现,一共需要打印 5 行,而每一行都是打印几个空格,然后再打印几个星号。这样我们就可以写出程序框架了。程序框架代码如下:public class Ch1_1 public static void main(String args) *for(i=1;i余弦曲线测试width=900height=600(6)运行结果把 Ch1_3.java 文件编译后的 Ch1_3.class 文件放到 Ch1_3.html 网页同一目录下,直接用 IE 浏览器打开 Ch1_3.html,运行程序,结果如图 1.6 所示。3扩展训练前面介绍的余弦曲线的绘制

3、,我们看到的是一个完整的静态图形,能否动态地展现绘制的过程?答案是肯定的,我们可以采用线程的方式来实现,参考代码如下:import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;public class donghua_cos extends Applet implements Runnable/通过实现 Runnable 接口实现线程操作int x,y;double a;int xpos=0;Thread runner;boolean painted=false;public void init() /Ap

4、plet 创建即启动执行,坐标初始化/ TODO Auto-generated method stubGraphics g=getGraphics(); /画画之前,必须先取得画笔for(x=0;x=(m+i) /输出等腰三角形两边空格System.out.print( );else if(j=(m-i-1)|(j=(m+i-1)/计算并输出等腰三角形两个腰arrij=1;System.out.printf(%-3d,arrij);else if(i+j)%2=0&m%2=0|(i+j)%2=1&m%2=1)/中 间 默 认 数 字 0用 空 格 替 换System.out.print( );

5、else /计算并输出中间数字arrij=arri-1j-1+arri-1j+1;System.out.printf(%-3d,arrij);System.out.println(); /输出换行(2)运行结果运行程序,结果如图 1.13 所示。图 1.13 程序输出结果第 1 章 变幻多姿的图表171.6 国际象棋棋盘1问题描述打印出国际象棋棋盘,如图 1.14 所示。2问题分析观察国际象棋棋盘的图案,可以发现其中的规律:棋盘由八行八列黑白方块相间组成,可以用 i 控制行,j 来控制列,根据 i+j 的和的变化来控制输出黑方块还是白方块。这里我们使用了 Swing 的标签组件 JLable,

6、通过设置 JLabel 组件的背景色和透明度来实现黑白方块。(1)确定程序框架这是一个绘图案例,这里我们采用 JFrame 创建窗口,然后在窗口里添加 JLabel 标签组件,通过前面的问题分析可知,JLabel 标签要设置一些属性实现黑白方块,然后显示窗口,实现如图 1.14 所示的效果。程序框架代码如下:public class Ch1_6 public static void main(String args) JFrame f=new JFrame(国际象棋棋盘);/窗口属性设置JLabel l = new JLabel(); /生成标签实例/标签属性设置f.add(l); /添加标签

7、f.setVisible(true); /显示窗口(2)窗口属性设置窗口属性设置包括窗口大小、位置等设置,其中窗口大小要满足能够容纳黑白方格,这里指定黑白方格大小为:20 *20,那么窗口属性大小大概为:168 *195。窗口位置可以随便指定,这里指定为:(350,200)。程序代码如下:/窗口设置大小f.setSize(168,195); /边框的长和宽/窗口设置位置Point point=new Point(350,200);f.setLocation(point);ublic class Ch1_6 (3)标签属性设置标签的属性主要是标签的位置及背景色,棋盘是由八行八列黑白方块相间组成,

8、可以图 1.14 国际象棋棋盘Java 趣味编程 100 例18通过双重循环来实现,用 i 控制行, j 来控制列,位置很容易设置,根据 i+j 的和的变化来设置背景色,表示黑方块还是白方块。程序代码如下:int grids=8; /行数和列数int gridsize=20; /单元格的高和宽for(int i=0; igrids; i+)for(int j=0; jgrids; j+)JLabel l = new JLabel(); /生成标签实例l.setSize(gridsize,gridsize); /设置标签大小l.setLocation(i*gridsize,j*gridsize)

9、; /设置标签位置if(i+j)%2=0) /当小方格的坐标和刚好是偶数时,l.setBackground(Color.black); /设置方格为黑色l.setOpaque(true); /设置为不透明 elsel.setBackground(Color.white); /设置方格为白色l.setOpaque(true); /设置为不透明 l.setBorder(BorderFactory.createLineBorder(Color.black); /设置边界为黑色(4)完整程序现在我们就需要把刚才的程序进行组合,构成我们的完整程序:import java.awt.Color;import

10、 java.awt.Point;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JLabel;public class Ch1_6 public static void main(String args) JFrame f=new JFrame(国际象棋棋盘); /创建窗口/窗口设置大小f.setSize(168,195); /边框的长和宽/窗口设置位置Point point=new Point(350,200);f.setLocation(point);int grids=8; /行数

11、和列数int gridsize=20; /单元格的高和宽for(int i=0; igrids; i+) /外循环控制行第 1 章 变幻多姿的图表19for(int j=0; jgrids; j+) /内循环控制列JLabel l = new JLabel(); /生成标签实例l.setSize(gridsize,gridsize); /设置标签大小l.setLocation(i*gridsize,j*gridsize); /设置标签位置if(i+j)%2=0) /当小方格的坐标和刚好是偶数时,l.setBackground(Color.black); /设置方格为黑色l.setOpaque(

12、true); /设置为不透明 elsel.setBackground(Color.white); /设置方格为白色l.setOpaque(true); /设置为不透明 l.setBorder(BorderFactory.createLineBorder(Color.black); /设置边界为黑色f.add(l); /添加标签f.setVisible(true); /显示窗口(5)运行结果运行程序,结果如图 1.15 所示。图 1.15 国际象棋棋盘1.7 心 形 图1问题描述打印心形图案,如图 1.16 所示。Java 趣味编程 100 例20图 1.16 心形图案2问题分析心形图案的实现,

13、重点是心形函数 r=a(1sin),据说这是笛卡尔死前寄出的最后一封情书的内容,这里面隐藏着一个刻骨铭心的秘密:“一生只为等待能手绘这个函数给我的人”。心形函数要做直角坐标系转换,然后投影到 xOy 平面上,就可以调用画椭圆方法来实现画心形图案。(1)确定程序框架为了提高图像的显示效果,须采用双缓冲技术。首先初始化缓冲区,接着绘制图像,然后再显示在 Applet 窗口中。程序框架代码如下:public class Ch1_7 extends Applet int width, height; Image image; /缓冲区对象Graphics g1; public void init()

14、/Applet 初始化时调用 setBackground(Color.black); /设置背景this.setSize(350, 310); width = getSize().width; /获得窗口宽度height = getSize().height; image = createImage(width, height); /创建图像对象g1 = image.getGraphics(); public void paint(Graphics g) /绘图方法 g1.clearRect(0, 0, width, height); g1.setColor(Color.red); /在缓冲区

15、绘制心形图案 /显示缓存区的可变 Image 对象g.drawImage(image, 0, 0, this); 第 1 章 变幻多姿的图表21(2)绘制图案由前面的问题分析可知,心形函数为 r=a(1sin),要做直角坐标系转换,然后投影到xOy 平面上,坐标确定下来后调用画椭圆方法来画心形图案上的点。程序代码如下:for(i = 0; i = 90; i+) /控制横向变化for(j = 0; j = 90; j+) /控制竖向变化 /转换为直角坐标r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j) * 18; x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + width / 2; /为了在中间显示,加了偏移量y = -r * Math.sin(Math.PI / 45 * j) + height / 4;/为了在中间显示,加了偏移量g1.fillOval(int) x, (int)y, 2,2); /绘制点

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号