2010-06-06 回答
/**
* @param args
* jauddy
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=15;//行数和宽度,奇数
for(int i=0;i
int middle=(num-1)/2;
boolean flag=true;
for(int j=0;j
if(i<=middle){
if(j>=middle-i&&j<=middle+i&&flag){
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}else{
if(j>=i-middle&&j
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}
}
if(i==(num-1)/2)flag=true;//保证中间行*号不和上下行一致
for(int j=0;j<=middle;j++){
if(i<=middle){
if(j>=middle-i&&j<=middle+i&&flag){
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}else{
if(j>=i-middle&&j
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}
}
System.out.println("");
}
}
补充:
奇数偶数都可以
补充:
这是简写的:
/**
* @param args
* jauddy
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=22;//行数
for(int i=0;i
int middle=(num-1)/2;//取中间列
boolean flag=true;//隔一个空格打印一个*号
for(int j=0;j
int m=j;//m中间变量,分别打印头和尾
if(j
else m=j-num;//打印完头部,重新打印,即为尾部
if(i<=middle){//打印头部前一半
if(m>=middle-i&&m<=middle+i&&flag){
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}else{//打印头部后一半
if(m>=i-middle&&m
System.out.print("*");
flag=false;
}else{
System.out.print(" ");
flag=true;
}
}
}
System.out.println("");//换行
}
}