public class Demo {
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联公司是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都网站制作、成都网站设计、外贸营销网站建设、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
public static void main(String args[]) throws Exception {
for (int i = 1; i = 5; i++) {
for (int j = 1; j = 5 - i; j++) {
System.out.print(" ");
}
for (int k = 1; k = 2 * i - 1; k++) {
System.out.print('*');
}
System.out.println();
}
for (int i = 1; i = 4; i++) {
for (int j = 1; j = i; j++) {
System.out.print(" ");
}
for (int k = 7; k = 2 * i - 1; k--) {
System.out.print('*');
}
System.out.println();
}
}
}
思路:
* 第1行 空格数3(4-1) 星星数1(1*2-1)
*** 第2行 空格数2(4-2) 星星数3(2*2-1)
***** 第3行 空格数1(4-3) 星星数5(3*2-1)
******* 第4行 空格数0(4-4) 星星数7(4*2-1)
通过以上思路就可以打印出菱形
代码:
public class Lin {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int i,j,k;
for(i=0;i5;i++) //控制行
{
for(j=0;j5-i;j++) //控制空格
System.out.print(" ");
for(k=0;k2*i-1;k++) //控制*号输出
System.out.print("*");
System.out.print("n");
}
for(i=3;i0;i--)
{
for(j=0;j5-i;j++)
System.out.print(" ");
for(k=0;k2*i-1;k++)
System.out.print("*");
System.out.print("n");
}
}
}
public class Test2014111801 {
public static void main(String[] args) {
int size = 10;
if (size % 2 == 0) {//用size除以2余数等于0,说明size是个偶数,但菱形长度都是奇数的,所以需要加1
size++;
}
//整个循环都是从上到下,从左往右一个一个画的,只要符合条件就画一个对应的图标
for (int i = 0; i size / 2 + 1; i++) { //先循环上半部分,这是行
for (int j = size / 2 + 1; j i + 1; j--) {//循环列,画左上空白部分
System.out.print("1");// 每行从左往右画“1”的个数是(size/2+1)-(i+1),比如第一行是(10/2+1)-(0+1)=5,所以第一行画5个“1",以此类推
}
for (int j = 0; j 2 * i + 1; j++) {//则开始画边缘“*”和空白,开始地方是上面那个for循环画完之后的位置,这里的j和上面没有关系,这是重新从0开始计算的
if (j == 0 || j == 2 * i) {//已知紧跟着的第一个就是“*”,所以j==0时画个“*”,
System.out.print("*");// 第二个“*”的位置离第一个“*”的位置与行数的关系2*行号,如第二行第二个“*”的位置离第一个“*”2*1=2位(行号从0算起)
} else {
System.out.print("2");// 其他不是“*”的位置用“2”填充
}
}
System.out.println("3");//最外面画个“3”,
}
//下半部分类似
for (int i = size / 2 + 1; i size; i++) {
for (int j = 0; j i - size / 2; j++) {
System.out.print(" ");// 输出菱形左下角空白
}
for (int j = 0; j 2 * size - 1 - 2 * i; j++) {
if (j == 0 || j == 2 * (size - i - 1)) {
System.out.print("*");// 输出菱形下半部边缘
} else {
System.out.print(" ");// 输出菱形下半部空心
}
}
System.out.println("");
}
}
}
可以自己先理解理解,有问题可以追问
注解了以下 ,自己看看
final int count = 4; //count代表菱形的半径
for (int i = 1; i count * 2; i++) { //循环2*count-1次,表示竖直方向上 有多少行,
for (int j = 1; j count * 2; j++) { //循环2*count-1次 表示水平方向 有多少列,
if (i = count) { //菱形的上半部分
if (j = count - i + 1 j = count + i - 1) {
//为什么是在此区间,数学上就是 i,与j 的关系,当i=1是 只能是最中间一个*号,i 每加1 ,*号范围左右各加1。 你把菱形中间的对称轴要想象出来,对称轴就是j=count 的哪条竖直线
System.out.print("*"); //水平方向上 在此区间都输出*
} else {
System.out.print(" ");
}
} else { //菱形的下半部分
if (j = i - count + 1 j = 3 * count - i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}