刚开始学习语言的时候,老师都很喜欢让我们在控制台上使用“*”来输出某些图形,比如:三角形、菱形、方块什么的,这主要能让我们能更好地理解循环的语法和逻辑思维能力。
这些图形基本上都是直线的,所以在控制台上可以很方便地进行输出,不知道有没有人想过在控制台上输出一条有斜率的斜线呢?
在 AWT 上使用 Graphics 对象来做这些事的话是相当简单的,其中有内置的 drawLine 方法,告诉它 4 个点的坐标就可以很方便地在界面上画出一条斜线,但是在控制台我们如何做到这些呢?
闲着没事的时候,写了一个在控制台上输出五角星的小程序,不过这里面有点小小的 bug,bug 是什么、究竟在什么地方呢?先买个关子吧,我弄了好久头都大了不想去想了,如果发现的话或者是解决了的话,别忘记告诉我哦~~
顺便谨以此文作为博客的开篇祝贺!撒花~~
Test.java 测试类
public class
Test {
public static void main(String[] args) {
// 画一个半径为10,旋转为0,空白为全身空格,填充为★的五角星
Pentagram pen = new Pentagram(10, 0, ' ', '★' );
// 在控制台上输出这个五角星
Draw.printCanvas(pen.getPentagram());
}
}
public static void main(String[] args) {
// 画一个半径为10,旋转为0,空白为全身空格,填充为★的五角星
Pentagram pen = new Pentagram(10, 0, ' ', '★' );
// 在控制台上输出这个五角星
Draw.printCanvas(pen.getPentagram());
}
}
Pentagram.java 五角星类
public class
Pentagram {
private final char FILL_CHAR; // 填充字符
private final char SPACE_CHAR; // 空档字符
private final int R; // 五角星的外接圆半径
private final float ROTATION; // 五角星逆时针旋转角度
private final int X; // 用于生成画图数组
private final int Y; // 用于生成画图数组
/**
* 构造一个Pentagram对象
* @param radius 五角星的半径
* @param rotation 五角星的逆时针旋转度数
* @param spaceChar 画布上空白处填充字符
* @param fillChar 画布上线条部分填充字符
*/
public Pentagram(int radius, float rotation, char spaceChar, char fillChar) {
this.R = radius;
private final char FILL_CHAR; // 填充字符
private final char SPACE_CHAR; // 空档字符
private final int R; // 五角星的外接圆半径
private final float ROTATION; // 五角星逆时针旋转角度
private final int X; // 用于生成画图数组
private final int Y; // 用于生成画图数组
/**
* 构造一个Pentagram对象
* @param radius 五角星的半径
* @param rotation 五角星的逆时针旋转度数
* @param spaceChar 画布上空白处填充字符
* @param fillChar 画布上线条部分填充字符
*/
public Pentagram(int radius, float rotation, char spaceChar, char fillChar) {
this.R = radius;