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

入门新手看不懂输出结果求解答

public class breakone {

public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<10;i++)
{
for(int j=i;j<10;j++)
{
if(j==5)
{
break;
}
System.out.print("*");
}
System.out.println();
}

}

}
谁能给我详细解释下这个代码  break语句中断后为什么会出现两段一模一样的结果
String

------解决方案--------------------
i=1~4 执行4次打印星星
i=5 跳出内层循环打印空行
i=6~9 又进入内层循环执行4次打印星星
------解决方案--------------------
j==5 条件满足的话,只是当前循环不继续往下执行,并不会跳出整个循环。

意思是程序只少运行了 i==5 的这个循环。


i 的取值范围是 1≤i<5 5<i<9
------解决方案--------------------
break是跳出当前循环  而且只有j==5 才跳出循环 
里面就会执行 
4次  (i=1 j=i 执行4次(j++) j==5 跳出循环 )
3次   (i=2 j=i 执行3次(j++) j==5 跳出循环 )
2次
1次
0次
4次 (i=6 j=i 执行4次(j++) j==10 不满足j<10 跳出循环 )
3次
2次
1次
0次

------解决方案--------------------
外循环是控制行数,内循环控制列数,星星主要是内循环控制的,当j=1打出四个星星,j=5的时候跳出内循环,然后i++,然后j=2打出三个星星,j=5的时候跳出内循环,然后i++,依次循环,当j=5的时候直接跳出内循环打出空格,然后j=6~9不进入if条件,和上面的一样的了,
------解决方案--------------------
谁能给我详细解释下这个代码  break语句中断后为什么会出现两段一模一样的结果 ?
谁说的中断了以后还有两段一模一样的结果?
这个程序的结果明明就是两个一样的图像用一个空行隔开的。
当i=1的时候输出4个*号当i=2的时候输出3个*号,当i=3的时候输出2个*号当i=的时候输出一个*号。
也就是内循环中一次比一次的循环少,当i的值越来越大的时候。这是j也是越来越大,但是当他们等于5的时候就停止了。break只中断了中间的那个for循环,但是当外面的i=6的时候又开始了知道i=10,同理内循环的j也是从6开始,越来越大的时候每行输出的*号月少直到i=10的时候就中断了。
这个程序其实一种执行了8次中断。
------解决方案--------------------
在这个程序当中break只对内循环起作用,外面的没有起到作用的。外面的循环由i的大小控制。
------解决方案--------------------
你分三种情况分析一下就知道了
第一种情况:i<5;
第二种情况:i==5;
第三种情况:i>5