日期:2014-05-20  浏览次数:20603 次

紧急求助,这几个for循环里的判断条件是怎么来的,谢谢。
public class Test 
{
public static void main(String[] args) 
 {
 printHollowRhombus(10);
 }
public static void printHollowRhombus(int size)
{
if(size%2==0)
{
size++;
}
for(int i=0;i<size/2+1;i++)
{
for(int j=size/2+1;j>i+1;j--)
{
System.out.print(" ");
}
for(int j=0;j<2*i+1;j++)
{
if(j==0||j==2*i)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println(" ");
}
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(" ");
}

  }
}




练了几天,背下来了都,但还是不明白这几个for循环里的判断循环条件是怎么得来的,请高手帮忙解释下啊,万分感谢。比如这个for(int i=size/2+1;i<size;i++),里面的初始化值我也搞不懂怎么来的,帮忙解释下啊,谢谢。
Java

------解决方案--------------------
这个自己花点时间应该可以理解的吧
------解决方案--------------------
1. 把printHollowRhombus(int size)方法里的size设小一点的值(比如5),for循环里的size用5代替,用笔在纸上画出打印的图,在对照代码一点点的看,应该比较容易理解了。
2. 注释有些问题,注释应该在被注释代码的上面。
3. 背代码没任何意义。

=========================
以上纯属个人建议,不喜勿喷


------解决方案--------------------
SIZE是你这个菱形的高度(行数)
------解决方案--------------------
简单说:

一定要是奇数,因为要取中点作为中点。


第一个循环画上面2个线 A B
第二个循环画下面2个线 C D

无论ABCD 咋样,满足条件的打*,不满足的打空格

 设每个点用 (行,列)表示

A区打*的点 满足 (当前行,size/2+1-当前行) 大抵如此
B区打*的点 满足 (当前行,size+1-当前行)