展开全部

第一种,用图形

import java.awt.*;

import javax.swing.*;

public class WuJiaoXing extends JPanel {

private static final long serialVersionUID = 1L;

private JFrame frame = null;

private int r = 150; // 外顶点e68a84e8a2ad62616964757a686964616f31333337626234外接圆半径

private int[] x = new int[5]; // 5个X外顶点坐标

private int[] y = new int[5]; // 5个Y外顶点坐标

private int[] x_ = new int[5]; // 5个X内顶点坐标

private int[] y_ = new int[5]; // 5个Y内顶点坐标

public WuJiaoXing() {

this.math();

frame = new JFrame("五角星");

frame.getContentPane().add(this);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(500,500);

frame.setLocation(200, 200);

frame.setVisible(true);

}

private void math() {

int c = 360 / 5; // 角度

for (int i = 0; i < 5; i++) {

x[i] = (int) (Math.cos(i * c * Math.PI / 30 - Math.PI / 2) * (r) + r);

y[i] = (int) (Math.sin(i * c * Math.PI / 30 - Math.PI / 2) * (r) + r);

}

int r_ = (int) (r * Math.sin(18 * Math.PI / 180) / Math

.sin(126 * Math.PI / 180)); // 内顶点外接圆半径

for (int i = 0; i < 5; i++) {

x_[i] = (int) (Math.cos((i * c + 18) * Math.PI / 30 - Math.PI / 2)

* (r_) + r);

y_[i] = (int) (Math.sin((i * c + 18) * Math.PI / 30 - Math.PI / 2)

* (r_) + r);

}

}

public void paint(Graphics g) {

super.paint(g);

g.setColor(Color.YELLOW);

// g.setBackground(Color.RED);

// 填充

int[] x1 = { x[0], x[2], x_[2] };

int[] y1 = { y[0], y[2], y_[2] };

int[] x2 = { x[1], x[3], x_[3] };

int[] y2 = { y[1], y[3], y_[3] };

int[] x3 = { x[2], x[4], x_[4] };

int[] y3 = { y[2], y[4], y_[4] };

g.fillPolygon(x1, y1, 3);

g.fillPolygon(x2, y2, 3);

g.fillPolygon(x3, y3, 3);

// 描边

// g.setColor(Color.BLACK);

// g.drawLine(x[0], y[0], x[2], y[2]);

// g.drawLine(x[0], y[0], x[3], y[3]);

// g.drawLine(x[1], y[1], x[3], y[3]);

// g.drawLine(x[1], y[1], x[4], y[4]);

// g.drawLine(x[2], y[2], x[4], y[4]);

// g.drawLine(x[2], y[2], x[0], y[0]);

}

public static void main(String[] args) {

new WuJiaoXing();

}

}

想要Java 资料可以加我q u N 前面是二五七,中间是0一四后面是001

第二种,用控制台

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对象

*

* radius

* 五角星的半径

* rotation

* 五角星的逆时针旋转度数

* spaceChar

* 画布上空白处填充字符

* fillChar

* 画布上线条部分填充字符

*/

public Pentagram(int radius, float rotation, char spaceChar, char fillChar) {

this.R = radius;

this.ROTATION = rotation;

this.FILL_CHAR = fillChar;

this.SPACE_CHAR = spaceChar;

this.X = 2 * R + 1;

this.Y = 2 * R + 1;

}

public char[][] getPentagram() {

char[][] canvas = initCanvas();

Draw draw = new Draw(FILL_CHAR);

// 设五角星的最右边的一个点为 A,逆时针选取点 B~E

// 通过圆的极坐标公式可以得出:

// 得出以下各点的坐标

// A 点坐标(0.951R, 0.309R)

// B 点坐标(0, R)

// C 点坐标(-0.951R, 0.309R)

// D 点坐标(-0.588R, -0.809R)

// E 点坐标(0.588R, -0.809R)

// 画线段CA

draw.drawLine(mcos(162) * R, msin(162) * R, mcos(18) * R, msin(18) * R, canvas);

// 画线段DA

draw.drawLine(mcos(234) * R, msin(234) * R, mcos(18) * R, msin(18) * R, canvas);

// 画线段CE

draw.drawLine(mcos(162) * R, msin(162) * R, mcos(306) * R, msin(306) * R, canvas);

// 画线段DB

draw.drawLine(mcos(234) * R, msin(234) * R, mcos(90) * R, msin(90) * R, canvas);

// 画线段BE

draw.drawLine(mcos(90) * R, msin(90) * R, mcos(306) * R, msin(306) * R, canvas);

return canvas;

}

// 在方形的字符数组中指定两点画线条

// 对图形数组进行初始化,填充空格

private char[][] initCanvas() {

char[][] canvas = new char[Y][X];

for (int i = 0; i < Y; i++) {

for (int j = 0; j < X; j++) {

canvas[i][j] = SPACE_CHAR;

}

}

return canvas;

}

// 根据角度求正弦值,保留两位小数

private double msin(float a) {

return ((int) (Math.sin(Math.toRadians(a + ROTATION)) * 100)) / 100.0;

}

// 根据角度求余弦值,保留两位小数

private double mcos(float a) {

return ((int) (Math.cos(Math.toRadians(a + ROTATION)) * 100)) / 100.0;

}

}

class Draw {

private char fillChar;

public Draw(char fillChar) {

this.fillChar = fillChar;

}

/**

* 根据两个点画线在二维字符数组上画线

*

* x1

* y1

* x2

* y2

* canvas

*/

public void drawLine(double x1, double y1, double x2, double y2, char[][] canvas) {

int radius = (canvas.length - 1) / 2;

// 从 x 方向进行填充

if (x1 > x2) {

double t = x1;

x1 = x2;

x2 = t;

t = y1;

y1 = y2;

y2 = t;

}

// 获得直线方程的两个系数

double a = (y1 - y2) / (x1 - x2);

double b = y1 - a * x1;

// 根据 x 方向的值求出 y 值,并填充图形

for (int i = (int) Math.round(x1); i <= (int) Math.round(x2); i++) {

// 根据直线方程 y = ax + b,求 y

int y = (int) Math.round(a * i + b);

// 因为 y 和 i 算出来的结果有可能是负数,

// 为了采用数组来表示坐标,做了以下变换

// c[R][R] 即为坐标原点

// c[R][0..R] 为 x 方向的负半轴

// c[R][R+1..2*R] 为 x 方向的正半轴

// c[0..R][R] 为 y 方向的正半轴

// c[R+1..2*R][R] 为 y 方向的负半轴

int yy = radius - y;

int xx = radius + i;

yy = yy < 0 ? 0 : yy;

yy = yy > 2 * radius ? 2 * radius : yy;

xx = xx < 0 ? 0 : xx;

xx = xx > 2 * radius ? 2 * radius : xx;

canvas[yy][xx] = fillChar;

}

// 从 y 方向进行填充,便于减少间距问题产生的字符空档

if (y1 > y2) {

double t = x1;

x1 = x2;

x2 = t;

t = y1;

y1 = y2;

y2 = t;

}

// 根据 y 方向的值求出 x 值,并填充图形

for (int i = (int) Math.round(y1); i <= (int) Math.round(y2); i++) {

// 根据 x = (y - b) / a,求 x

int y = (int) Math.round((i - b) / a);

int yy = radius - i;

int xx = radius + y;

yy = yy < 0 ? 0 : yy;

yy = yy > 2 * radius ? 2 * radius : yy;

xx = xx < 0 ? 0 : xx;

xx = xx > 2 * radius ? 2 * radius : xx;

canvas[yy][xx] = fillChar;

}

}

/**

* 将画完图之后的画布输出到控制台上

*

* canvas

*/

public static void printCanvas(char[][] canvas) {

for (int i = 0; i < canvas.length; i++) {

for (int j = 0; j < canvas[i].length; j++) {

System.out.print(canvas[i][j]);

}

System.out.println();

}

}

}

public class Test {

public static void main(String[] args) {

// 画一个半径为10,旋转为0,空白为全身空格,填充为★的五角星

Pentagram pen = new Pentagram(10, 0, ' ', '★');

// 在控制台上输出这个五角星

Draw.printCanvas(pen.getPentagram());

}

}

注:其中Pentagram pen = new Pentagram(10, 0, ' ', '★');

10是半径,0是旋转度,' '是以空格表示空格,★是打印的字符。可以自己改

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java 五角星_java用星号打出五角星相关推荐

  1. html怎么打五角星符号怎么打出来,电脑小技巧 五角星符号在哪里打出来 - 驱动管家...

    广大网友在上网的时候肯定有看到过"★""☆"这样的五角星符号,有些网友表示这样的符号要怎么打呢?其实打出五角星符号的方法有多种,下面给大家介绍在不同输入法中打出 ...

  2. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  3. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  4. java绘制五角星_java画各种五角星

    Java 根据输入的值动态的画出各种五角星同时控制其大小(利用星号),主要实体的,空心的,平移的,利用for循环对初学者有一定的帮助.可以通过输入n(n>3)动态的控制五角星的大小,下面是完整代 ...

  5. java绘制五角星_JAVA 五角星小程序

    安好如初 回答时间:2019-12-05 向TA提问 public interface IDrawStar { void setColor(Color c); void moveStar(int x, ...

  6. java画五角星_java 画五角星 填充五角星

    [java]代码库import java.awt.*; import javax.swing.*; public class WuJiaoXing extends JPanel { public Wu ...

  7. java如何画五角星_Java——绘制五角星

    Java2D支持通过GeneralPath实现绘制任意的几何形状. 步骤:1)实例化GeneralPath对象 2)调用moveTo()方法锚地开始点坐标 3)调用lineTo()或curveTo() ...

  8. java绘制五角星_Java——绘制五角星

    Java2D支持通过GeneralPath实现绘制任意的几何形状. 步骤:1)实例化GeneralPath对象 2)调用moveTo()方法锚地开始点坐标 3)调用lineTo()或curveTo() ...

  9. Java类有个星号标记_Java中import包带*(星号)问题

    今天发现Java中import包时,带*(星号)的一个问题.下面附上代码和截图: 在我的电脑"E:\csdn\"目标下有两个java文件: Print.java和Demo.java ...

最新文章

  1. 第三次Scream冲刺
  2. (第十一周)考试系统测试报告
  3. BugKuCTF 杂项 闪的好快
  4. VFP参考资料word版
  5. Maven项目无法加载jdbc.properties
  6. koa mysql mongodb_koa 操作MongoDB数据库
  7. Dojo1.6 中的事件处理
  8. 剑指offer——面试题38:数字在排序数组中出现的次数
  9. 用例设计-黑盒测试技术常用大法☞等价类划分法
  10. Python基于迁移学习的猫狗大战实战【图像二分类任务】【实测准确度超过99.5%】
  11. python基于pip和conda配置国内安装源,提升下载安装性能
  12. android pickerview 多行,Android PickerView 自定义条件选择器 联动
  13. 第3章 项目立项管理
  14. SpringBoot中SpringMVC 整合启动嵌入式Tomcat 原理及源码解析
  15. Minimum supported Gradle version is 6.1.1. Current version is 5.6.4.
  16. Discovery and auto register
  17. Hive报错Error during job, obtaining debugging information...
  18. android 判断是否是数字,是否在数字范围内,是否是字母,下一个字母,小写转大写,大写转小写;
  19. mac系统下启用root用户
  20. 芯准TTE“宏时隙“调度机制 ——基本原理

热门文章

  1. 新版firefox中没有firebug了
  2. python软件开发工程师的职位薪点_软件工程师各职位任职资格
  3. 赢钱的诀窍——风险控制
  4. python练习项目(23)-用*号输出字母C的图案
  5. CNN中parameters和FLOPs计算
  6. ---------------经典语录二-----------------------
  7. 【Ansible】Playbook剧本
  8. ES7.16.2基础操作之近似匹配和精准度匹配相结合(四)
  9. 解读报告 Future of Project Management
  10. 上交所回应“科创板受理企业科技含量不高”:会在审核问询环节对企业进行多轮问询...