看有几个人知道

05-10-26 liurengui
下面是一道很基础java题,我以为很简单,谁知在网上传了才一段时间,回答的人过半错了.
public class Try{
public static void main(String args[]){
int sum=0;
int i;
for(i=0;i<5;i++;)
sum=sum+1;
i=i+1;
System.out.print(sum+"."+i);
   }
  }
答案是5,6
谁知道原因

mythmoon
2005-10-26 22:26
很巫约鹤鲆幌滦姓{,看下\行^程,把每一步出砭涂梢粤!
深入理解for 循h

junwalo
2005-10-26 22:54
问题很简单,for循环后没有大括号,那就只对它后面所跟随的第一条语句有作用;for循环结束时,m=5,同样i=5,但接下来i+1就等于6,所以最后的输出是m=5,i=6.

cnliuxj
2005-10-27 10:15
错了的人主要是没搞清楚for循环和变量作用域的问题

笑独行
2005-10-27 12:03
细心的人才会知道,高手就不一定了

blueoxygen
2005-10-28 13:24

class Try
{
	public static void main(String[] args){
	int sum=0;
	int i;
	for(int i=0;i<5;i++)
		sum=sum+1;
	i=i+1;
	System.out.println(sum+"."+i);
	}
};

换成这样还有点考得意思
否则就是看谁细心么 大括号的问题

blueoxygen
2005-10-28 13:32
>
>
> class Try
> {
> public static void main(String[] args){
> int sum=0;
> int i;
> for(int i=0;i<5;i++)
> sum=sum+1;
> i=i+1;
> System.out.println(sum+"."+i);
> }
> };

> 换成这样还有点考得意思
> 否则就是看谁细心么 大括号的问题


BTW 不编译靠调试,呵呵
尤其刚从c or cpp过渡过来的程序员,这种scope问题开始很不习惯