重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int maxNum = 6;
创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为黄骅企业提供专业的成都网站设计、做网站,黄骅网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
for (int i = -maxNum + 1; i maxNum; i++) {
for (int j = -maxNum + 1; j maxNum; j++) {
int m = maxNum - Math.abs(j);
int n = maxNum - Math.abs(i);
System.out.print(m n ? n : m);
System.out.print(" ");
}
System.out.println();
}
我自己写的 放进去的时候把包名改下 类名记得一样
这个没有行列数限制,可以是长方形的,
如果要正方形的话,行列数设置成相等
package com.test;
public class Ddd {
public static void main(String[] args) {
int n = 9, m = 10;//n行数,m是列数
int num = 1;
int total = n * m;
int a[][] = new int[n][m];
int count = 0;
loop: for (;;) {
{
int i = count;
for (int j = count; j = m - count - 1; j++) {
a[i][j] = num;
num++;
if (num total) {
break loop;
}
}
}
{
int j = m - count - 1;
for (int i = count+1; i = n - count - 2; i++) {
a[i][j] = num;
num++;
}
if (num total) {
break loop;
}
}
{
int i = n - count - 1;
for (int j = m - count - 1; j = count ; j--) {
a[i][j] = num;
num++;
}
if (num total) {
break loop;
}
}
{
int j = count;
for (int i = n - count - 2; i = count + 1; i--) {
a[i][j] = num;
num++;
}
if (num total) {
break loop;
}
}
count++;
}
for (int[] b : a) {
for (int c : b) {
if (c 10) {
System.out.print(" " + c + " ");
} else {
System.out.print(c + " ");
}
}
System.out.println();
}
}
}
使用Graphics2D对象
设置G2D的字体
将数字转字符串
计算字符串在G2D对象中的显示高度、宽度
FontRenderContext frc = g2.getFontRenderContext();
double totalW = font.getStringBounds(info, frc).getWidth();
计算字体高度
float ch = font.getLineMetrics(info, frc).getAscent();
将角度转弧度(180--Math.PI)
设置初始角度为-Math.PI(即水平倒转方向)
循环每个字符
计算第N个字符的显示宽度CW
计算第N个字符显示宽度需要占用的角度CA=(CW * 2*Math.PI / totalW),
计算第N个字符字体的旋转角度(起始角度+CA/2)
设置G2D的字体为旋转字体
从圆心开始,以半径-字体高度CH为半径,起始角度为角度,计算第N个字符起始点(x,y)
使用G2D在x,y位置绘制第N个字符
循环结束