黑马程序员技术交流社区

标题: 我突然想起了一个问题,想打印一个圆 [打印本页]

作者: 刘海陆    时间: 2013-5-21 20:33
标题: 我突然想起了一个问题,想打印一个圆
本帖最后由 刘海陆 于 2013-5-22 15:35 编辑

我想在控制台上打印一个空心的园,希望大家给个思路,谢谢
作者: 黄炳期    时间: 2013-5-21 21:12
同问吧,我零基础,刚开始学。。
作者: 李慧声    时间: 2013-5-22 12:42
  1. public class printCircle{
  2. public static void main(String [] args){
  3. int row,cross,r = 12;//行,列,半径
  4. int i,j;//用于控制循环
  5. //上半部分圆
  6. for(i = 0;i<r;i++){
  7. double space = Math.sqrt(r*r-(r-i)*(r-i));
  8. int spacePrint = (int)(2*space);
  9. if(spacePrint==2*r){
  10. System.out.println(" ");
  11. }

  12. for(j=1;j<(2*r-spacePrint);j++){
  13. System.out.print(" ");
  14. }

  15. System.out.print("*");

  16. for(j=1;j<=2*spacePrint;j++){
  17. System.out.print(" ");
  18. }

  19. System.out.println("*");
  20. }

  21. //下半部分圆
  22. for(i = r-1;i>=0;i--){
  23. double space = Math.sqrt(r*r-(r-i)*(r-i));
  24. int spacePrint = (int)(2*space);

  25. for(j=1;j<(2*r-spacePrint);j++){
  26. System.out.print(" ");
  27. }

  28. System.out.print("*");

  29. for(j=1;j<=2*spacePrint;j++){
  30. System.out.print(" ");
  31. }

  32. System.out.println("*");
  33. }
  34. }
  35. }
复制代码
代码自己看吧,圆确实比较打印。
作者: 刘海陆    时间: 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