进阶版画菱形
上次的控制台画菱形是经过慢慢调试得来的,所以代码没有太大的规律,连我自己第二次看都不一定看得懂,所以我想了这个重置版本的,这个版本是根据数学中的坐标函数的原理,纵轴为 " i “,横轴为"y”,菱形的四个边为函数(参考i=y),结合以上的思路来写的代码。
代码
//控制台输入数字,也只能输入数字,否则会报错
Scanner a1 = new Scanner(System.in);
//将控制台输入的数字转换成int类型
int a = a1.nextInt();
//定义A的ASCII码
char b = 'A';
//编写纵坐标
for(int i = 0; i <= a; i++){
//编写横坐标
for(int y = 0; y <= a + 2; y++){
//高中数学不等式函数,这四个函数围城了菱形,其中的(a+1)%2是判断输入的数是否为偶数,偶数左边的函数就会向右移动一位
if(i <= y + a/2 && i >= (y - (a + 1) % 2) - a/2 && i <= -(y - (a + 1) % 2) + 3*(a/2) && i >= -y + a/2){
//菱形上半部分的ASCII码编写
if(i <= (a - 1)/2){
System.out.print(""+(char)((char)b + (char)i));
// System.out.println(i);
}else{//菱形下半部分ASCII码编写
System.out.print(""+(char)(b + a - 1 - i + (a + 1)%2));
}
}
//到位换行
else if(y == a + 2){
System.out.println(" ");
}
//其余位打空
else{
System.out.print(" ");
}
}
}
效果图
上图为效果图