为了账号安全,请及时绑定邮箱和手机立即绑定

i的值的问题

为何每执行一次循环i的值便会+1

if(i++ % 10 == 0)这个语句中不应该只是作为判断用的吗,比如第一次i=1,第二次再循环时i不是又变回1了吗

正在回答

3 回答

前面不是设定了一个条件吗?每输出10个byte就换行,这个if语句就是用来换行的

while((b=in.read())!=-1){
            if(b<=0xf)//如果输出的整形b字节小于等于4位,就让它补0,就是让它刚好占一个字节,便于观察
                System.out.print("0");
            System.out.print(Integer.toHexString(b)+" ");//将整形b转换为十六进制表示的字符串
            if(i++%10==0){
                System.out.println();
            }

在while循环中,按顺序来。一开始i=1;开始循环,输出一个b并且不换行,然后if语句判断i,i自增1,这时候i=2了,和10的余数不为0,所以不用换行,第一次循环结束。

开始第二次循环,输出第二个b 并且不换行,在用if语句来判断i ,这个时候的i已经是2了,在上一次的循环已经自增了1,i再次自增1,这个时候i=3了,继续和10求余,余不为0,不换行。

当i=10的时候,if语句成立,也就是i和10的余为0了,该换行了。

下一步就是i=11,和10余不为0,不换行。

到i=20的时候,和10的余又0,换行。

你说的i=1;是他在while循环语句外面赋的初始化值,i是变量。在while循环中一直在变的

我说的小学生都看的懂了

0 回复 有任何疑惑可以回复我~
#1

暮女神 提问者

非常感谢!
2017-03-02 回复 有任何疑惑可以回复我~
#2

暮女神 提问者

额,,还是不太理解,,我刚刚debug了一下,发现确实是i的值在逐渐增加,,但我不能理解的是i++是在if语句里啊,,每次它退出if语句不就回到初始值了吗?难道是if语句和for循环的i++不一样?求解答~
2017-03-02 回复 有任何疑惑可以回复我~
#3

历飞雨 回复 暮女神 提问者

首先,if语句只是判断语句。单独拿if来说它的i++因为没有循环体,所以没有自增能力。但重点是if语句是在while语句的大括号里面的,这样才是和for循环的i++一样了有了自增能力。懂了不 你要把这些代码分成一个一个的小整体去解读
2017-03-02 回复 有任何疑惑可以回复我~
#4

慕粉1052051344

你说的很有条理,但是如果你调试就会发现i不是每次都增加一
2017-06-23 回复 有任何疑惑可以回复我~
查看1条回复

这个问题选择不回答,一直在绕圈

0 回复 有任何疑惑可以回复我~

i++的意思是下一次调用到i的时候,i+1。第一次循环是1,到第二次循环就变成2,依次+1。

所以每次循环它的值都改变了。

0 回复 有任何疑惑可以回复我~
#1

暮女神 提问者

还是不能理解,每次在if判断之前i不是都变回1了吗?if(i++ % 10 == 0)这个只是作为判断使用
2017-02-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

i的值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信