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

解决方案 »

  1.   

    i=1~4 执行4次打印星星
    i=5 跳出内层循环打印空行
    i=6~9 又进入内层循环执行4次打印星星
      

  2.   

    j==5 条件满足的话,只是当前循环不继续往下执行,并不会跳出整个循环。意思是程序只少运行了 i==5 的这个循环。
    i 的取值范围是 1≤i<5 5<i<9
      

  3.   

    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次
      

  4.   

    外循环是控制行数,内循环控制列数,星星主要是内循环控制的,当j=1打出四个星星,j=5的时候跳出内循环,然后i++,然后j=2打出三个星星,j=5的时候跳出内循环,然后i++,依次循环,当j=5的时候直接跳出内循环打出空格,然后j=6~9不进入if条件,和上面的一样的了,
      

  5.   

    break 之后又回到了第一层循环。
      

  6.   

    谁能给我详细解释下这个代码  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次中断。
      

  7.   

    在这个程序当中break只对内循环起作用,外面的没有起到作用的。外面的循环由i的大小控制。
      

  8.   

    你分三种情况分析一下就知道了
    第一种情况:i<5;
    第二种情况:i==5;
    第三种情况:i>5
      

  9.   

    用debug自己跟一下就很清楚了