问答详情
源自:4-1 字节流之文件输入流FileInputStream-1

i的值的问题

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

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

提问者:暮女神 2017-02-26 17:32

个回答

  • 历飞雨
    2017-03-02 00:05:24
    已采纳

    前面不是设定了一个条件吗?每输出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循环中一直在变的

    我说的小学生都看的懂了

  • qq_为妳战天下_0
    2017-07-29 20:46:48

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

  • qq_Ambition_5
    2017-02-27 10:18:45

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

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