2015-04-20 104 views
0

请一步解释如果可能的话为什么此代码显示输出17而不是16?

package array; 

public class array3 { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int result = 0; 
     for (int i = 0; i < 5; i++) { 
      if (i == 3) { 
       result += 10; 
      } else { 
       result += i; 
      } 
     } 
     System.out.print(result);  
    } 
} 
+9

你真的需要转向堆栈溢出吗?所以有人建议你在你的IF块中添加print语句来判断发生了什么? – GhostCat

+3

而不是要求美国一步一步地向你展示为什么输出是17而不是16,你应该告诉我们为什么你忽略16(一步一步;)) – Peanut

+1

如果你使用IDE,你还应该检查调试模式和使用的断点.. – Loci

回答

2

i循环从0到4

+--------+-------------+ 
| i | result | 
+--------+-------------+ 
| 0 | 0  | 
| 1 | 0 + 1 = 1 | 
| 2 | 1 + 2 = 3 | 
| 3 | 3 + 10 = 13 | 
| 4 | 13 + 4 = 17 | 
+--------+-------------+ 

步骤这就是你得到17

+0

哦,我没有做我= 4步....感谢很多队友 – DaX

+0

@DaX不用谢!它发生在我们所有人:) – alainlompo

+2

@DaX那么你是如何到达16?我想你去了我的两个分支如果我== 3。 – halex

0

你的代码的增量(增加)的“我的价值'您的当前iterration索引变量(类型整数)/结果'变量(也,类型整数)。只有当我== 3,然后结果=结果+10,否则结果=结果+我。希望澄清。

相关问题