这是两个程序,下面一个程序是我改动后的。我把if (i++>--j) break;语句改为两个语句,分别为if (i++>--j);和 break;但是改动后,输出的结果却相差那么大。
public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j) break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}
---------public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j);
break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}现在讨论第二个程序,break的意思是跳出离break最近的循环。本来应该是当i++>--j的时候,也就是6>4的时候跳出的,此时执行结果应该是i=7,j=4;也就是说结果应该跟第一个程序是一样的。但程序执行出来的结果是2和9。这就是说明,程序一运行就跳出来了。
所以想请各位大哥大姐姐,帮忙解释一下原因。
public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j) break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}
---------public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j);
break; }while(i<15);
System.out.println("i="+i+",j="+j);
}
}现在讨论第二个程序,break的意思是跳出离break最近的循环。本来应该是当i++>--j的时候,也就是6>4的时候跳出的,此时执行结果应该是i=7,j=4;也就是说结果应该跟第一个程序是一样的。但程序执行出来的结果是2和9。这就是说明,程序一运行就跳出来了。
所以想请各位大哥大姐姐,帮忙解释一下原因。
解决方案 »
- [百度分享]javascript中的数据类型 分析
- 请问类类型怎么表示
- 求最全的java笔试题+面试题
- 谁可以告诉我下这段代码是什么意思啊 ?
- JCreate中的问题
- 这个程序实在让我费解,所以想请大家来帮忙!!!!!!!!!!!!!!!!!!
- jdialog和jframe
- 同是关键字,throw 和 throws 有何区别
- 惆怅菜鸟请教: 用j2ee做web开发或搞电子商务 比用.net做 那些地方较有优势?
- 怎样得到java application所在的当前目录路径?(不用JFileChooser)
- java se实体对象的属性输出到表格问题,谢谢!
- 这个程序为什么输出这样的结果?请高手解释一下!
2、break;看这两句,第一句后面有个冒号,也就是说这是单独的一句,不管他的值为TRUE还是FALSE,他都要走2的
也就是说,i++和-j之后就break跳出了循环,打印的当然是2和9了。
if(i++>--j)中对i,j进行了操作,然后顺序执行break语句。
break;
if后是空语句,执行完后再执行break语句,
所以这个循环只执行了一次就跳出了.
//第一个符合条件才跳出
if (i++>--j)
{
break;
}
//第二个,不管如何都跳出
if (i++>--j)
{}break;
public class Car{
public static void main(String[] args){
int i=1,j=10; //**************************初始化i=1,j=10
do{
if (i++>--j) break; //*******************当i++的值大于--j的时候,break跳出循环,
//*******************此时i=6,j=4}while(i <15);
System.out.println("i="+i+",j="+j);
}
}public class Car{
public static void main(String[] args){
int i=1,j=10;
do{
if (i++>--j); //************此处i=1,j=9.由于if循环后面有分号,所以if语句运行结束。而
//break语句是跳出离它最近的“有效循环”,因为if循环后面的分号已经结束了
//所以已经不是有效循环了,所以break结束的是while循环了!
break; }while(i <15);
System.out.println("i="+i+",j="+j);
}
}
break;
把第一个";"去掉就一样了,理由同意二楼的.
不管如何简单加上这大括号永远是个好习惯,又不浪费时间又不降低效率.
如果没写有时出个GUB找得要死人..