用*号绘制一个正圆。
package net.csdn.liwei;
public class PrintACircle {
public static void main(String[] args) {
PrintCircle p=new PrintCircle();
p.Print();
}
}
class PrintCircle{ //画一个R=10的圆
double y; //y坐标
int x,m; //x坐标,m为*的位置
public void Print(){
for(y=10;y>=-10;y--){ //坐标一行一行向下
m=(int)(2*Math.sqrt(100-y*y)); //区出圆的x坐标值,屏幕行距大于列距,2为调整值
for(x=1;x<30-m;x++){ //30为中心轴,画左边的点
System.out.print(" ");
}
System.out.print("*");
for(;x<30+m;x++) { //画右边的点
System.out.print(" ");
}
System.out.print("*");
System.out.println(); //打完换行
}
}
}
昨天写的程序,把它改了一下,让它更像面向对象的,不过有点过了.
没加注释,还是原来的。
//基于面向对象的思想重新做这个小程序
//将PrintCos1作成一个画余弦曲线的类,将PrintACosLine类作为主类
package net.csdn.liwei;
public class PrintACosLine {
public static void main(String[] args) {
PrintCos p=new PrintCos();
p.printAll();
}
}
class PrintCos{
private double y;
private int x,m;
private void printLeftStar(){
for(x=1;x<m;x++){
System.out.print(" ");
}
System.out.print("*");
}
private void printRightStar(){
for(;x<62-m;x++){
System.out.print(" ");
}
System.out.print("*");
}
public void printAll(){
for(y=1;y>=-1;y-=0.1){
m=(int)(Math.acos(y)*10);
this.printLeftStar();
this.printRightStar();
System.out.println();
}
}
}