程序设计艺术卷4a组合算法(一)

175.56元

包邮

(需用券)

去购买 >

079ec2d24f2e4924663b126d92de1845.png

最近看的算法4 有看到里面介绍了绘图库很好用,然后学习了一番这个几个demo大致上都体现了绘图卡的用法

在用绘图库之前得先导入jar 由于我看的是pdf 版本 没有介绍哪里有这个jar包 这个小破包让我找了很久。在下方连接中:

http://introcs.cs.princeton.e...

在上方连接中

bV5OUm?w=1696&h=900

然后导入jar到工程中就行(这都不会的话还是先去百度一下吧)

标准输出 一些pai

print(String s) 打印s

println(String s) 打印s 后面接一个换行符

println() 换行

printf(String s,...) 格式化输出

格式化输出有点类似C语言的输出方式 类似设参

int x = 5;

int y=3.15485498;

System.out.printf("x = %d, y = %f\n", x, y);

什么类型的值就该在什么位置上,顺序也得注意

绘图库:

我们经常用的输入输入 一般只是文本字符串,其实还有一个图像输出的的东西StdDraw,它能画出点和直线,

基本的几何图形也行比如:

stdDraw.line()能根据给的坐标画出一条连接(x1,y1) 与 (x2,y2)d 线段

stdDraw.point()你只要各处一个参数坐标(x,y)就能画出一个中心点

如何控制:

绘图库还包含着其他的方法比如 画布的大小 比例 直线的颜色 宽 文本字体 绘制时间(动画显示)

颜色我一般定义一个常量类这样还调用

基本API

setXscale(double x0,double x1) 将x范围设定在(x0,x1);

setYscale(double y0,double y1) 将x范围设定在(y0,y1);

setPenRadius(double r) 设定画笔的粗细(你乐意理解成,r指的是笔芯的半径)

setPenColor(Color c) 设定画笔颜色为c

setPenFont(Font f) 将文本的字体设为f

setCanvasSize(int w,int h) 设定画布大小 w为宽 h为高

clear(Color c ) 清空画布 用颜色cf覆盖填充

show(int t) 显示所有图形并且保持 t 秒

我手敲了一些demo 可以参考一下

public class StdDrawDemo {

/**

* addPerson : hzb 2018-3-14

* @param arags

*/

public static void main(String[] arags ){

demo1();

}

/**

* 画个简单的函数图

* addPerson : hzb 2018-3-14

*/

public static void demo1(){

int n =100;

StdDraw.setXscale(0,n);

StdDraw.setYscale(0,n*n);

StdDraw.setPenRadius(.01);

for (int i =1;i<=n;i++){

StdDraw.point(i,i);

StdDraw.point(i,i*i);

StdDraw.point(i,i*Math.log(i));

}

}

}

生成的图片:

bV5OPw?w=519&h=563

public class StdDrawDemo {

/**

* addPerson : hzb 2018-3-14

* @param arags

*/

public static void main(String[] arags ){

demo2();

}

/**

* 画个简单的函数图

* addPerson : hzb 2018-3-14

*/

public static void demo1(){

int n =100;

StdDraw.setXscale(0,n);

StdDraw.setYscale(0,n*n);

StdDraw.setPenRadius(.01);

for (int i =1;i<=n;i++){

StdDraw.point(i,i);

StdDraw.point(i,i*i);

StdDraw.point(i,i*Math.log(i));

}

}

/**

* 画个随机数组的图形形态

* addPerson : hzb 2018-3-14

*/

public static void demo2(){

int n =50;

double[] doubles = new double[n];

for (int i=0;i

//用随机函数生成随机数

doubles[i] = StdRandom.random();

}

for(int i=0;i

double x = 1.0*i/n;

double y = doubles[i]/2.0;

double rw =0.5/n;

double rh = doubles[i]/2.0;

//x 代表线在那个位置 y代表这个线的高度

// rw rh 理解成平面坐标参数

StdDraw.filledRectangle(x,y,rw,rh);

}

}

}

生成图片

bV5OSE?w=516&h=564

我们将数组排序一下

通过

bV5OSS?w=634&h=487

bV5OSM?w=510&h=562

这样就能很直观的看出来数组的分布排序清空不用看数字那么麻烦

写的不好望指正 请发邮箱告知我问题(劳烦各位大佬了)wavesape@126.com

addPerson : hzb 2018-3-15 00:14:27

原文链接:https://segmentfault.com/a/1190000013741389

java 11官方入门(第8版)教材

79.84元

包邮

(需用券)

去购买 >

f0f3f55624fb396b1764d42d6df88864.png

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐