黑马程序员技术交流社区

标题: 根据输入半径打印圆 [打印本页]

作者: hfutWL    时间: 2016-8-26 00:03
标题: 根据输入半径打印圆
学完二维数组和循环后做的一道题:
根据输入的圆的半径,在控制台打印出用"*"组成的圆.
希望大家能给出更好的程序
[Java] 纯文本查看 复制代码
import java.util.Scanner;

public class Circle2 {
        //定义一个字符串类型的二维数组来存储圆形
                public static String[][] circle;
                public static int radius;
                public static void main(String[] args){
                        while(true){
                                System.out.println("请输入需要打印的圆的半径:");
                                Scanner sc = new Scanner(System.in);
                                radius = sc.nextInt();
                                if(radius > 20){
                                        System.out.println("超出范围了!!!");
                                        break;
                                }
                                String[][] circle = new String[(radius << 1) + 1][radius << 2];
                                init(circle);
                                initCircle(circle);
                                printCircle(circle);
                        }
                }

                public static void init(String[][] circle){
                        for(int i = 0; i < circle.length; i++){
                                for(int j = 0; j < circle.length; j++){
                                        circle[j] = " ";
                                }       
                        }
                }
                public static void printCircle(String[][] circle){
                        for(int i = 0; i < circle.length; i++){
                                for(int j = 0; j < circle.length; j++){
                                        System.out.print(circle[j]);
                                }
                                System.out.println();
                        }

                }
                public static void initCircle(String[][] circle){
                        for(int i = 0; i < circle.length; i++){
                                double angle = Math.acos((radius * 1.0 - i) / (radius + 0.1));
                                int point1_y = (int)(1 + (radius << 1) - Math.sin(angle) * (radius << 1));
                                int point1_x = i;
                                int point2_y = circle[0].length - point1_y;
                                int point2_x = i;
                                circle[point1_x][point1_y] = "*";
                                circle[point2_x][point2_y] = "*";
                        }
                }

}


作者: lrwillinggerry    时间: 2016-8-26 00:03
不错不错,这样可以锻炼编程思维!




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