小程序,帮忙点拨下。

kelong1988 2010-05-06 10:59:52
public class Test {
public static void main(String args[]) {
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
x++;
}
}
System.out.println(x + " " + y);
}

}

答案是8,2。 我自己算为什么是4,2?
...全文
113 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxg263 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 kelong1988 的回复:]
感谢各位了,这只是书上的例题,现在懂了,谢。
[/Quote]


那这样的书就不值得看了。
macrotea-cn 2010-05-07
  • 打赏
  • 举报
回复
所言甚是!!
mqinghuang 2010-05-07
  • 打赏
  • 举报
回复
顶楼上,在公司写代码要实用不是作秀,
Believe 2010-05-07
  • 打赏
  • 举报
回复
这样分析:当z=0时:
先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=1,y=1;
当z=1时:
先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=2,y=2;
当z=2时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=4,y=2;
当z=3时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=6,y=2;
当z=4时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=8,y=2;
yuanlaifenglin 2010-05-07
  • 打赏
  • 举报
回复
精辟。。。。。。。。。。。。
[Quote=引用 5 楼 sxg263 的回复:]

这样的程序没有意义。
要是在公司写这样 的程序 ,早就被炒了。

1、注意程序风格
2、注意程序的可读性

不要用中学数奥的脑子来写程序,不要写那些“精巧”的程序。
[/Quote]
sxg263 2010-05-07
  • 打赏
  • 举报
回复
这样的程序没有意义。
要是在公司写这样 的程序 ,早就被炒了。

1、注意程序风格
2、注意程序的可读性

不要用中学数奥的脑子来写程序,不要写那些“精巧”的程序。
qybao 2010-05-07
  • 打赏
  • 举报
回复
当Z=0,执行if ((++x > 2) || (++y > 2)),x变为1,y变为1,不满足if,跳到下一次z循环
当z=1,执行if ((++x > 2) || (++y > 2)),x变为2,y变为2,不满足if,跳到下一次z循环
当z=2,执行if ((++x > 2) || (++y > 2)),x变为3,y还是2(或运算的特点),满足if,执行x++,x变为4,继续下一次Z循环
当z=3,执行if ((++x > 2) || (++y > 2)),x变为5,y还是2,满足if,执行x++,x变为6,继续下一次Z循环
当z=4,执行if ((++x > 2) || (++y > 2)),x变为7,y还是2,满足if,执行x++,x变为8,继续下一次Z循环
当z=5,不满足循环条件,循环退出



kelong1988 2010-05-07
  • 打赏
  • 举报
回复
感谢各位了,这只是书上的例题,现在懂了,谢。
chy2012 2010-05-07
  • 打赏
  • 举报
回复
这程序要注意的是:
1.循环语句
2.++x与x++的区别

其它的都很简单了
whatisj2ee 2010-05-07
  • 打赏
  • 举报
回复
楼上说的对,这种问题也只有在面试中能够出现
duchq044 2010-05-07
  • 打赏
  • 举报
回复
这种问题只会出现在面试中
lonefeifei 2010-05-07
  • 打赏
  • 举报
回复
楼上的说的很清楚了,嘿嘿
focusforce 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 focusforce 的回复:]
public class Test
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
System.out.println(x + " " + y);
x++;
}
}
S……
[/Quote]

运算符左结合,(++y > 2) 在(++x > 2)成立的情形不执行
laihuangxi 2010-05-06
  • 打赏
  • 举报
回复
++x先加,再用
x++,用完了,再加
focusforce 2010-05-06
  • 打赏
  • 举报
回复
public class Test
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
System.out.println(x + " " + y);
x++;
}
}
System.out.println(x + " " + y);
}

}
这样写你就明白了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧