黑马程序员技术交流社区
标题:
打印圆
[打印本页]
作者:
杨华东
时间:
2012-10-14 11:28
标题:
打印圆
本帖最后由 杨华东 于 2012-10-21 20:15 编辑
我弱弱的问一哈 有会用for循环打印圆的吗??(相似就行)
作者:
xuewuzhijing
时间:
2012-10-14 14:45
有啊,代码如下:
public class PrintCircle {
/**
* 参数为半径
*
* @param r
*/
public static void printCricle(int r) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i <= 2 * r; i++) {
int[] ys = getY(i, r);
for (int y = 0; y <= ys[1]; y++) {
if (y == ys[1]) {
// 如果为最后一个星号,则换行
sb.append("*\r\n");
} else if (y == ys[0]) {
// 第一个星号
sb.append('*');
} else {
// 空格
sb.append(' ');
}
}
}
System.out.println(sb);
}
/**
*
* 公式:(x-r)^2 +(y-r)^2 = r^2
* 根据行数,算出列向的两个坐标 y = r +(-) 根号(2xr-x^2)
* 其中是radix是行距和列距的比例,可以调一下
*
* @param x
* @return
*/
private static int[] getY(int x, int r) {
double radix = 2.2;
int[] ys = new int[2];
double sqrt = Math.sqrt(2 * x * r - x * x);
ys[0] = (int) ((r - sqrt) * radix);
ys[1] = (int) ((r + sqrt) * radix);
return ys;
}
public static void main(String[] args) {
printCricle(20);
}
}
看看行不
作者:
杨华东
时间:
2012-10-14 17:07
xuewuzhijing 发表于 2012-10-14 14:45
有啊,代码如下:
public class PrintCircle {
/**
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
结果出乎意料啊 你说说 在Java中有木有封装好的Math类的功能 可以打印呢??我找了 好像没有 那这就遇到问题了
简单的打印圆 怎么就搞不出来呢??郁闷啊 网上的代码 根本行不通
作者:
张记
时间:
2012-10-15 11:07
去百度一大堆
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2