黑马程序员技术交流社区
标题:
我突然想起了一个问题,想打印一个圆
[打印本页]
作者:
刘海陆
时间:
2013-5-21 20:33
标题:
我突然想起了一个问题,想打印一个圆
本帖最后由 刘海陆 于 2013-5-22 15:35 编辑
我想在控制台上打印一个空心的园,希望大家给个思路,谢谢
作者:
黄炳期
时间:
2013-5-21 21:12
同问吧,我零基础,刚开始学。。
作者:
李慧声
时间:
2013-5-22 12:42
public class printCircle{
public static void main(String [] args){
int row,cross,r = 12;//行,列,半径
int i,j;//用于控制循环
//上半部分圆
for(i = 0;i<r;i++){
double space = Math.sqrt(r*r-(r-i)*(r-i));
int spacePrint = (int)(2*space);
if(spacePrint==2*r){
System.out.println(" ");
}
for(j=1;j<(2*r-spacePrint);j++){
System.out.print(" ");
}
System.out.print("*");
for(j=1;j<=2*spacePrint;j++){
System.out.print(" ");
}
System.out.println("*");
}
//下半部分圆
for(i = r-1;i>=0;i--){
double space = Math.sqrt(r*r-(r-i)*(r-i));
int spacePrint = (int)(2*space);
for(j=1;j<(2*r-spacePrint);j++){
System.out.print(" ");
}
System.out.print("*");
for(j=1;j<=2*spacePrint;j++){
System.out.print(" ");
}
System.out.println("*");
}
}
}
复制代码
代码自己看吧,圆确实比较打印。
作者:
刘海陆
时间:
2013-5-22 15:29
我昨天也做出来了,我现在网吧,没有带源码
我的思路是这样的:①把控制台当成一个x-y轴的坐标,然后用for嵌套循环,便利2*radium行,2*radium列的点,
②这时候定义一个函数isCircle(),把便利到的点传入函数,如果这个点在圆上就返回true,打印"* ",否则返回false的话,就打印
" ".
③isCircle(int x ,int y) , Math.abs(Math.sqrt((x-r)*(x-r)+(y-r)*(y-r)) -r)< 0.35 就返回true,否则false就可以了
求分,谢谢版主
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2