这是《疯狂Java》书中的第四章习题3,原题提示要用到Math类,但我发现可以不用Math类实现,代码如下:
package com.company;
import java.util.Scanner;
public class circle {
public static void main(String[] args){
System.out.println("输入半径:");
Scanner in=new Scanner(System.in);
int r=in.nextInt();
System.out.println(r);
for (int x=0;x<2*r+1;x++){
String str="";
for (int y=0;y<6*r;y++){
if ((r-x)*(r-x)+(3*r-y)*(3*r-y)/8-r*r>1 || (r-x)*(r-x)+(3*r-y)*(3*r-y)/8-r*r<-1){
str+=" ";
}
else{
str+="*";
}}
System.out.println(str);
}
}
}
如果输入半径10,打印结果为:
需要注意的是应该根据字符串自身长度与打印的行间隔调整表达式的系数来使得打印出来的图形像个圆而不是椭圆。