当前位置: 代码迷 >> J2SE >> 高手解答,需要这个程序输出结果的详细分析。多谢
  详细解决方案

高手解答,需要这个程序输出结果的详细分析。多谢

热度:231   发布时间:2016-04-23 20:17:06.0
高手解答,需要这个程序输出结果的详细分析。谢谢!
int[] arr = {1,3,3,2,8};
    String str ="";
    int i=0;
    public void doIt(){
      for(;i<arr.length;){
       if(arr[i]>arr[i+1]){
        str=arr[i]+arr[i+1]+str;
        break;
      } else if(arr[i]<arr[i+1]){
        str=arr[i]+str+arr[i+1];
        i++;
        continue;
      } else{
        str+=arr[i];
        i++;
      }
    }
   System.out.println(i);
   System.out.println(str);
  }
------解决思路----------------------
debug一下,就清晰了。I=0  arr[0]<arr[3]执行第2个。i=1执行第三个。i=2时执行第一个break跳出循环
------解决思路----------------------

1 continue 13
1 else 133
2 break 5133

执行顺序如上,从这里可以看出,当i的值为0的时候arr数组中的下标为0的(1)<下标为1的(3),所以执行else if,接下来就类似了。
需要注意的是continue和break的区别,其中continue是不执行本层循环continue后边部分的代码,继续下一次的循环(如果循环没有完成的话),而break是直接跳出循环,即使下一次的循环也会满足条件。所以当到
2 break 5133
的时候就不在继续执行了。