A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海陆 中级黑马   /  2013-5-21 20:33  /  1031 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘海陆 于 2013-5-22 15:35 编辑

我想在控制台上打印一个空心的园,希望大家给个思路,谢谢

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

3 个回复

倒序浏览
同问吧,我零基础,刚开始学。。
回复 使用道具 举报
  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. }
复制代码
代码自己看吧,圆确实比较打印。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
我昨天也做出来了,我现在网吧,没有带源码
我的思路是这样的:①把控制台当成一个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就可以了


求分,谢谢版主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马