public class FooBar{
public static void main(String[] args){
int i=0,j=5;
4) tp:
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at line 4
Answer:B
我想问为什么 for(;;i++)这句话没有被执行?
public static void main(String[] args){
int i=0,j=5;
4) tp:
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at line 4
Answer:B
我想问为什么 for(;;i++)这句话没有被执行?
解决方案 »
- 如何在BorderLayout的CENTER部分调用事件响应?
- 异常问题..来解决哈..初学
- windows xp系统 如何更改环境变量PATH 使得appletviewer起作用?
- javac 找不到 .class jdk1.1.8 系统 xp
- 如何理解java中没有指针?
- 新人第一次编写的小程序,麻烦大家来看看,错误超过4处……
- 哪儿可以找到java类库的帮助文件。类似于msdn那种
- 一个例子程序的编译错误
- 有谁知道怎么将double的格式变为正常的输出吗?
- 一个学习多线程过程中遇到的奇怪问题
- 讨论 : 通过3-4个月的培训是否可以获得1-2年软件开发的经验,
- 求助:构造函数执行顺序的问题?
执行了啊,所以最后j才会变成-1啊,这个for是条件永远成立的循环,通过里面的break来跳出循环啊
if(i>j)break tp
相当于
for(j=5;j>=i;--j)我怎么没有看到i++ 啊
你不是说System.out.println("i="+i+",j="+j); 这里的吧!
这里的加 不是+1;只是连接起来的符号罢了!
public static void main(String[] args){
int i=0,j=5;
4) tp: for(;;i++){
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at l
再贴一遍原题
关于for循环的三个条件的执行顺序是这样的:
1.初始化
2.比较条件
3.执行循环体
4.改变值
所以对于这个程序 在执行
for(;;--j)
if(i>j)break tp
的时候 i的值还是0;但是由于break tp在内层循环中 所以当条件i>j满足时就直接退出tp而不进行i++了
所以答案应该是 i=0,j=-1
原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。为什么++i就选a阿?