步骤一:输出正方形
public class Test000 {
public static void main(String [] args) {
int size=15;//边长
for(int i=1;i<=size;i++) {//控制行数
for(int j=1;j<=size;j++) {//控制每行长度
System.out.print("*");
}
System.out.println();//每输出一行换行
}
}
}
效果图:
步骤二:输出一竖
public class Test000 {
public static void main(String [] args) {
int size=15;//边长
int startNum=size/2+1;//起始位置,由中间位置向两边扩展
int endNum=size/2+1;//终止位置,由中间位置向两边扩展
for(int i=1;i<=size;i++) {//控制高
for(int j=1;j<=size;j++) {//控制长
if(j>=startNum&&j<=endNum) {//介于起始位置和终止位置之间输出*
System.out.print("*");
}else {
System.out.print(" ");//否则输出空格
}
}
System.out.println();//每输出一行换行
}
}
}
效果图:
步骤三:输出实心菱形
public class Test000 {
public static void main(String [] args) {
int size=15;//边长
int startNum=size/2+1;//起始位置,由中间位置向两边扩展
int endNum=size/2+1;//终止位置,由中间位置向两边扩展
boolean flag=true;/*为了能够从输出一竖变成输出实心菱形,引入flag控制当下半菱形
* 时tartNum和endNum的变化规律
*/
for(int i=1;i<=size;i++) {//控制高
for(int j=1;j<=size;j++) {//控制长
if(j>=startNum&&j<=endNum) {//介于起始位置和终止位置之间输出*
System.out.print("*");
}else {
System.out.print(" ");//否则输出空格
}
}
System.out.println();//每输出一行换行
if(endNum-startNum+1==size) { //当endNum-startNum+1==size时,正好打印完*数最多的一行
flag=false;
}
if(flag) {//上半菱形
startNum--;
endNum++;
}else {//下半菱形
startNum++;
endNum--;
}
}
}
}
效果图:
步骤四:打印空心菱形
public class Test000 {
public static void main(String [] args) {
int size=15;//边长
int startNum=size/2+1;//起始位置,由中间位置向两边扩展
int endNum=size/2+1;//终止位置,由中间位置向两边扩展
boolean flag=true;/*为了能够从输出一竖变成输出实心菱形,引入flag控制当下半菱形
* 时tartNum和endNum的变化规律
*/
for(int i=1;i<=size;i++) {//控制高
for(int j=1;j<=size;j++) {//控制长
if(j==startNum||j==endNum) {/* 将原本介于起始位置和终止位置之间输出*
改为在起始位置和终止位置之间输出*
*/
System.out.print("*");
}else {
System.out.print(" ");//否则输出空格
}
}
System.out.println();//每输出一行换行
if(endNum-startNum+1==size) { //当endNum-startNum+1==size时,正好打印完*数最多的一行
flag=false;
}
if(flag) {//上半菱形
startNum--;
endNum++;
}else {//下半菱形
startNum++;
endNum--;
}
}
}
}
效果图: