黑马程序员技术交流社区

标题: 一道简单的打印题 [打印本页]

作者: 王震阳老师    时间: 2012-9-23 10:23
提示: 该帖被管理员或版主屏蔽
作者: 尤圣回    时间: 2012-9-23 10:26
我写写看
作者: 尤圣回    时间: 2012-9-23 10:33
  1. import java.math.BigDecimal;

  2. public class Circle
  3. {
  4. /**
  5. * 半径
  6. */
  7. public int radius;

  8. /**
  9. * 一排点数 = 半径*2+1
  10. */
  11. public double point;

  12. public static void main(String[] args)
  13. {
  14. Circle circle = new Circle(6);
  15. circle.show();
  16. }

  17. Circle(double dou)
  18. {
  19. radius = changeValue(dou);//四舍五入
  20. point = radius*2 +1;//一排点数 = 半径*2+1
  21. }

  22. /**
  23. * 打印圆
  24. *
  25. */
  26. private void show()
  27. {
  28. for(int i = 0;i<point;i++)
  29. {
  30. for(int j = 0;j<point;j++)
  31. {
  32. if(isCircle(j,i))
  33. System.out.print(" *");
  34. else
  35. System.out.print(" ");
  36. }
  37. System.out.print("\n");
  38. }
  39. }

  40. /**
  41. * 判断某点是否是圆的点
  42. * @return true:是;false:不是
  43. */
  44. private boolean isCircle(int x, int y)
  45. {
  46. x = x-radius;
  47. y = y-radius;
  48. double temp = square(radius) - square(y);
  49. int z = ((int)Math.sqrt(temp)); // 用圆的公式求星号离x轴的长度
  50. if(x == z || x== -z)
  51. {
  52. return true;
  53. }
  54. else
  55. {
  56. return false;
  57. }
  58. }

  59. /**
  60. * 四舍五入
  61. * @param dou double
  62. * @return double
  63. */
  64. public int changeValue(double dou)
  65. {
  66. BigDecimal bdBigDecimal = new BigDecimal(String.valueOf(dou)).setScale(0, BigDecimal.ROUND_HALF_UP);
  67. return bdBigDecimal.intValue();
  68. }
  69. /**
  70. * 求平方
  71. * @param x int
  72. * @return 平方值
  73. */
  74. public double square(int x)
  75. {
  76. return (double)(x*x);
  77. }
  78. }
复制代码

作者: 王震阳老师    时间: 2012-9-23 10:41
解决的思路应该是把这个圆拆分成四分之一圆,剩下的都是对称的,用极坐标法,计算不同的“*”的位置。
作者: 王震阳老师    时间: 2012-9-23 11:45
尤圣回 发表于 2012-9-23 10:26
我写写看

C:\Documents and Settings\Administrator\桌面\1.jpg这是我运行的结果,不错。赞一个。
作者: 尤圣回    时间: 2012-9-23 11:51
我看不到你的
作者: 王震阳老师    时间: 2012-9-23 12:30
尤圣回 发表于 2012-9-23 11:51
我看不到你的

我不会截图上去呀




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2