编写java程序应用for打印出实心菱形
问题描述:
答
public static void main(String[] args) throws Exception {
char char0=' ';
char char1='*';
int c=6;
int width=2*c-1;
for(int i=1;i<c*2;i++){
int m=0;
if(i<c){
m=i*2-1;
}else{
m=(2*c-i)*2-1;
}
int n=(width-m)/2;
for(int j=1;j<=width;j++){
if(j>n && j<=m+n){
System.out.print(char1);
}else {
System.out.print(char0);
}
}
System.out.println();
}
}
答
可以分部分求,先求上半部分的1和2,因为循环次数是相同的,有两层循环,外层循环是行数,内层循环分部分循环,第一部分循环每一行的空格数,第二部分循环*的个数,下半部分类似,重点就是找到循环的次数和结束点。
把它补成一个长方形,里面是菱形,如下图
可以分部分求,先求上半部分的1和2,因为循环次数是相同的,有两层循环,外层循环是行数,内层循环分部分循环,第一部分循环每一行的空格数,第二部分循环*的个数,下半部分类似,重点就是找到循环的次数和结束点。
答
打印思路,设置菱形宽是n,上半层循环从1~n,先打印n/2-i的空格,再打印i个空格
下半层打印反转