案例描述:
本案例要求编写一个程序,可以根据用户要求在控制台打印出不同的图形。例如,用户自定义半径的圆形和用户自定义边长的正方形。
运行结果:
首先创建一个统一的父类。
package 面向对象程序思想下;
//创建所有的功能类的父类,让他们实现他的静态的show方法
public abstract class MyPrint {
public abstract void show();
}
接下来创建子类,完成打印图形:
package 面向对象程序思想下;
//这个是打印圆形的类
/**
* 2022/3/13
*/
public class MyPrintCircle extends MyPrint{
@Override
public void show() {
for (int y = 0 ; y <= 2*5 ; y += 2){
// Math.round 按照四舍五入返回最接近参数的int值
// Math.sqrt 返回算数平方根
int x = (int)Math.round(5 - Math.sqrt(2*5*y-y*y));
int len = 2 * (5 - x);
for (int i = 0 ; i <= x ; i++){
System.out.print(" ");
}
System.out.print("*");
for (int j = 0 ; j <= len ; j++){
System.out.print(" ");
}
System.out.println("*");
}
}
}
package 面向对象程序思想下;
import java.util.Scanner;
//创建子类继承抽象类,实现打印长方体
public class MyPrintSquare extends MyPrint{
Scanner str=new Scanner(System.in);
public void show(){
System.out.println("输入一个数字");
int str1=str.nextInt();
//使用双层循环,打印边
for(int i=0;i<str1;i++) {
for(int j=0;j<str1;j++) {
System.out.print("*");
}
//这个作用是用来换行的
System.out.println();
}
}
}
最后就是测试类;
package 面向对象程序思想下;
import java.util.Scanner;
public class MyPointTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
MyPrint zheng=new MyPrintSquare();
MyPrint yuan=new MyPrintCircle();
System.out.println("请输入要打印的图形:1:正方形。2.圆");
int d=in.nextInt();
if(d==1) {
zheng.show();
}else if(d==2) {
yuan.show();
}
}
}
总结:本次练习我学到啦如何使用继承,计算打印*等,学会使用内循环。