小弟刚刚开始学习Java 现在遇到一道题 不知道何解 先来求助各位大大 恳请各位帮忙解释一下
求下面程序的运行结果
public class test
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for(int k = 0;k < 5;k++)
{
if((++x > 2)||(++y > 2))
{
x++;
}
}
System.out.println(x + "and" + y);
}
}
答案是8and2 但是我不明白为什么 有哪位大大能够给我仔细的解释一下 我知道程序要做5次循环 第一次循环结束值为1and1 第二次结束为2and2 但是第三次开始就变为4and2 从第三次开始++y就不起作用了一样 我不明白为什么 我想的答案应该是8and5 能告诉我为什么++y不作为了呢 谢谢
求下面程序的运行结果
public class test
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for(int k = 0;k < 5;k++)
{
if((++x > 2)||(++y > 2))
{
x++;
}
}
System.out.println(x + "and" + y);
}
}
答案是8and2 但是我不明白为什么 有哪位大大能够给我仔细的解释一下 我知道程序要做5次循环 第一次循环结束值为1and1 第二次结束为2and2 但是第三次开始就变为4and2 从第三次开始++y就不起作用了一样 我不明白为什么 我想的答案应该是8and5 能告诉我为什么++y不作为了呢 谢谢
解决方案 »
- 提交form表单action代码执行两次?!!!!!!!是struts2
- 如何把.sql文件导入到MySql Control Center中
- 怎样将web项目放到互联网上
- 项目无法访问
- hibernate的session什么时候用手动关闭
- 怎么把用户输入的HTML代码在页面以源码方式显示出来
- 在j2ee的系统里,applet通过URLConnection,向服务器的servlet传信息,服务器可以接受,但返回信息时总是.........
- resin多站点问题!!!在线等
- ant是什么,在什么情况下用到,如何使用?
- Ajax向控制层提交请求后一定要返回结果吗?
- 分页问题
- JAVA2D中如何从右到左写字符串
public class test
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for(int k = 0;k < 5;k++)
{
if((++x > 2)||(++y > 2))
{
x++;
System.out.println(x + "and" + y);
}
}
System.out.println(x + "and" + y);
}
}
顶楼上的,自己运行一下就知道了
当(++x > 2)为true时,就会往下执行++x;而不再判断(++y)> 2,
第三次根本就不会执行++y
如果x为真,就不会去判断y了。x && y;
如果x为假,也不会去判断y了。
对于 || 前面的条件为true,整个表达式就肯定是true,所以就没必要继续执行后面的判断
对于 && 如果前面是false,整个表达式肯定是false,后面也不会执行
当x=2时 ++x > 2 为true
||当第一个条件为真时,就不会去判断第二个条件了
所以++y并没有执行最后y还是2
当k=1时,x=2,y=2;
当k=2时,x=4,y=2;
当k=3时,x=6,y=2;
当k=4时,x=8,y=2;
当k=5时 不进入循环其实说白了就是“||”这个逻辑运算符的问题
如果前面满足要求 后面的久不判断 后面y没有加了
如果前面不满足要求 后面的接着判断 所以前面y加了两次
求下面程序的运行结果
public class Hello
{
public static void main(String args[])
{
boolean b1 = true;
boolean b2 = false;
boolean b3 = true;
if(b1&b2|b2&b3|b2|b3)
{
System.out.println("aaa");
}
if(b1&b3|b2&b3|b2|b3)
{
System.out.println("bbb");
}
}
}
答案是aaabbb 但是我不明白为什么
boolean b2 = false;
boolean b3 = true; b1&b2|b2&b3|b2|b3
-->true&false|false&true|false|false&和|运算级别是一样的,像加减一样逐步算,最后得到true