遇到一道题 不知道何解 先来求助各位大大 恳请各位帮忙解释一下

问题描述

小弟刚刚开始学习Java现在遇到一道题不知道何解先来求助各位大大恳请各位帮忙解释一下求下面程序的运行结果publicclasstest{publicstaticvoidmain(Stringargs[]){intx=0;inty=0;for(intk=0;k<5;k++){if((++x>2)||(++y>2)){x++;}}System.out.println(x+"and"+y);}}答案是8and2但是我不明白为什么有哪位大大能够给我仔细的解释一下我知道程序要做5次循环第一次循环结束值为1and1第二次结束为2and2但是第三次开始就变为4and2从第三次开始++y就不起作用了一样我不明白为什么我想的答案应该是8and5能告诉我为什么++y不作为了呢谢谢

解决方案

解决方案二:
直接在x++后面加一个打印语句,不就能看到这是怎么运行了的嘛
解决方案三:
publicclasstest{publicstaticvoidmain(Stringargs[]){intx=0;inty=0;for(intk=0;k<5;k++){if((++x>2)||(++y>2)){x++;System.out.println(x+"and"+y);}}System.out.println(x+"and"+y);}}

顶楼上的,自己运行一下就知道了
解决方案四:
我加了所以我才知道每一次循环的输出结果但是不明白为什么会是这个结果你能帮我解释一下吗
解决方案五:
if((++x>2)||(++y>2))当(++x>2)为true时,就会往下执行++x;而不再判断(++y)>2,第三次根本就不会执行++y
解决方案六:
||运算符不是要比较运算符两边的数值吗然后得出true或是false那样的话++y还是执行了的啊
解决方案七:
我个人感觉4楼说得很对。
解决方案八:
在第三次循环执行,此时,x=2,y=2,执行时编译系统只执行到(++x>2)成立,因为是或关系,后者(++y)>2无需执行.就可以确定,所以是8and2
解决方案九:
x||y;如果x为真,就不会去判断y了。x&&y;如果x为假,也不会去判断y了。
解决方案十:
||只要一边为true了,整个就为true,就不用执行后面的了。
解决方案十一:
这种问题基础书上都有讲的哦
解决方案十二:
引用5楼blue_sky_flying的回复:

||运算符不是要比较运算符两边的数值吗然后得出true或是false那样的话++y还是执行了的啊

逻辑运算符是短路的对于||前面的条件为true,整个表达式就肯定是true,所以就没必要继续执行后面的判断对于&&如果前面是false,整个表达式肯定是false,后面也不会执行
解决方案十三:
if((++x>2)||(++y>2))当x=2时++x>2为true||当第一个条件为真时,就不会去判断第二个条件了所以++y并没有执行最后y还是2
解决方案十四:
当k=0时,x=1,y=1;当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加了两次
解决方案十五:
if((++x>2)||(++y>2))当前面为true后面就不执行了
解决方案:
我明白了谢谢各位大大真心感谢
解决方案:
引用11楼cooler4k的回复:

引用5楼blue_sky_flying的回复:||运算符不是要比较运算符两边的数值吗然后得出true或是false那样的话++y还是执行了的啊逻辑运算符是短路的对于||前面的条件为true,整个表达式就肯定是true,所以就没必要继续执行后面的判断对于&&如果前面是false,整个表达式肯定是false,后面也不会执行

已经很详细了就是这样的
解决方案:
我这里还有另一个问题不知道哪位大大能够再辛苦一下帮我解释一下求下面程序的运行结果publicclassHello{publicstaticvoidmain(Stringargs[]){booleanb1=true;booleanb2=false;booleanb3=true;if(b1&b2|b2&b3|b2|b3){System.out.println("aaa");}if(b1&b3|b2&b3|b2|b3){System.out.println("bbb");}}}答案是aaabbb但是我不明白为什么
解决方案:
以第一个为例子:booleanb1=true;booleanb2=false;booleanb3=true;b1&b2|b2&b3|b2|b3-->true&false|false&true|false|false&和|运算级别是一样的,像加减一样逐步算,最后得到true
解决方案:
13楼说的对哦

时间: 2024-07-31 07:17:39

遇到一道题 不知道何解 先来求助各位大大 恳请各位帮忙解释一下的相关文章

database-自学数据库我碰到的这种问题?不知道从何下手?求各位大神帮帮忙!

问题描述 自学数据库我碰到的这种问题?不知道从何下手?求各位大神帮帮忙! 1.设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={A→B, C→D,(A,C) →E}则该关系的候选码是什么?该关系属于第几范式?为什么? 2.设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={A→B, A→C,A→D,D →E}则该关系的候选码是什么?该关系属于第几范式?为什么?若要规范化为高一级范式,则将得到哪些关系?

编程-请问这道题用C++怎么做,求助,这道题怎么做,谢谢

问题描述 请问这道题用C++怎么做,求助,这道题怎么做,谢谢 一圆型游泳池,现在需在其周围建一圆型过道,并在其四周围上栅栏.栅栏价格为35元/米,过道造价为20元/平方米.过道宽度为3米,游泳池半径由键盘输入.要求编程计算并输出过道和栅栏的造价. 注意:本题为填空编程题,只能在/******start******/和/******end******/之间填写代码. 测试用例: 输入: 6 output: Fencing Cost is 1979.2 Concrete Cost is 2827.4

解压问题-求助,我解压东西默认解压到C盘了

问题描述 求助,我解压东西默认解压到C盘了 我我解压默认解压到C盘了,怎么办现在C盘都装满了,默认解压路径在哪,怎么删除.自己找了没找到 解决方案 解压的时候有选择路径的吧 解决方案二: 默认解压路径 应该可以在软件中设置 默认安装路径 在注册标中 设置 解决方案三: 如果你有安装包的话,重新安装一遍,就知道你安装在哪了 解决方案四: 一般都在C:Program Files (x86)这个文件夹下建立相应的默认软件文件夹,自己可以慢慢找 解决方案五: 如果你在桌面解压,当然放在C盘.admini

C#处理PictureBox中图像的问题,度娘回答不知道,只能来这里求助了

问题描述 我用PictureBox打开一张图,假如尺寸是800px*600px,我现在需要在PictureBox中的这张图截取一部分,换句话说,我需要这张图的中间一部分,如果用Rectangle(x,y,width,height)来说明的话,原图是Rectangle(0,0,800,600),我现在需要截取出来Rectangle(300,100,400,200)这么一个区域的图像并保存.我是在解决不了了,烦请各位大神出手相救 解决方案 解决方案二:1计算PictureBox和实际Image的比例

通信信号处理的一些基本常识

http://www.cnblogs.com/touchblue/archive/2013/02/15/2912920.html 1.符号能量问题      请问各位大虾,像4QAM,16QAM,32QAM,64QAM调制每符号平均能量怎么求解?我看别人程序时,16QAM得每符号平均能为10,不知道怎么求出来的.我想知道对于这些调制方式,怎么加噪的,我看一段程序如下:       Eav=10*d^2; % energy per symbol       snr=10^(SNRindB(p)/1

android-小白求助,求大神帮忙解释下加点注释~谢谢

问题描述 小白求助,求大神帮忙解释下加点注释~谢谢 package com.hanway.oa.activity; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.

DataTable的有关问题

问题描述 我在C#程序里想实现将一个50M左右的数据拆分,放入临时建立的datatable里,然后对datatable进行操作.------------------------------------------------------------------但是,当我把50M的数据全部按自己定义的字符串字段添加到datatable里以后,发现我的C#程序占内存达到了恐怖的750M--如果只把这50M数据以字符串的形式读入到C#中占的内存不到200M,不知道为什么差别会这么大?哪位高手帮忙解释一

c# win界面 用文件存储的 读取和修改

问题描述 小小小虾米一只提问都不知道怎么问就是想求一段简短的实例windows界面下的读取txt文件里的多行数据以及修改多行数据另这有一段比较拙略的读取代码是用数组实现的不知道有没有好一点的可以改进的privatevoidbutton1_Click_1(objectsender,EventArgse)//"查询"按钮{FileStreamifm=newFileStream("stuinformation.txt",FileMode.Open,FileAccess.R

求助:C#里向临时建立的datatable里填充数据为什么占内存那么大?有方法解决吗?

问题描述 我在C#程序里想实现将一个50M左右的数据拆分,放入临时建立的datatable里,然后对datatable进行操作.但是,当我把50M的数据全部按自己定义的字符串字段添加到datatable里以后,发现我的C#程序占内存达到了恐怖的750M--如果只把这50M数据以字符串的形式读入到C#中占的内存不到200M,不知道为什么差别会这么大?哪位高手帮忙解释一下!跪求解决方法! 解决方案 解决方案二:SqlDataReader代替解决方案三:高深呢.解决方案四:datatable每一次用完