当前位置:编程学习 > JAVA >>

for ( i=0,j=s.length-1;i<=j; i++,j--) 初学这个语句不明白,等同什么

for ( i=0,j=s.length-1;i<=j; i++,j--) 初学这个语句不明白,等同什么呢?那位高手帮忙解答下。。。。 --------------------编程问答-------------------- i=0;
j=s.length-1;
while(i<=j){
  i++;
  j--;
} --------------------编程问答-------------------- 初始条件: i=0,j=s.length-1
判断条件:;i<=j;
判断成立后的循环执行: i++,j-- --------------------编程问答-------------------- Lz这段代码应该是类似这样的


int i,j;
int[] s = new int[15];
for ( i=0,j=s.length-1;i<=j; i++,j--)
{

}


意思就是说,i初始化为0,j的值小于数组的长度
其实这个形象点说,比如一个15cm的尺子的刻度吧,现在这个i就是从0前进,j就是从15往回退,条件是,只要i和j还有距离 那就走,直到两个元素重合。


public static int halfSearch(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;

while(min<=max)
{
mid = (max+min)>>1;

if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}


有点类似这个吧,折半查找,Lz体会体会  其实条件就是 只要咱们俩还有距离,那就继续取中查找 --------------------编程问答--------------------
引用 3 楼 Candylibin 的回复:
Lz这段代码应该是类似这样的


Java code?123456int i,j;        int[] s = new int[15];        for ( i=0,j=s.length-1;i<=j; i++,j--)        {                                     }

意思就是说,i初始化为0,j的值小……

谢谢您的解答,这个语句用到倒序排序上了。
for ( i=0,j=s.length-1;i<=j; i++,j--){
char temp=s[i];
s[i]=s[j];
s[j]=temp;
}   
System.out.print(s);
为什么这么写呢?

 for ( j=s.length-1;j>0; j--)
System.out.print(s); 这个也可以实现倒序输出


--------------------编程问答--------------------
引用 4 楼 g37100 的回复:
引用 3 楼 Candylibin 的回复:Lz这段代码应该是类似这样的


Java code?123456int i,j;        int[] s = new int[15];        for ( i=0,j=s.length-1;i<=j; i++,j--)        {                                     ……



你上面那个是换位操作吧,说白了就是前一个向后  后一个向前(交换位置),那样走, 你第二种是从尾部最后一个元素开始打印数组(倒着打印数组),直到这个数组的头部 --------------------编程问答--------------------
引用 4 楼 g37100 的回复:
引用 3 楼 Candylibin 的回复:Lz这段代码应该是类似这样的


Java code?123456int i,j;        int[] s = new int[15];        for ( i=0,j=s.length-1;i<=j; i++,j--)        {                                     ……


效果是一样的 --------------------编程问答-------------------- for ( i=0,j=s.length-1;i<=j; i++,j--) 是说i初始值为0,j初始值为s的长度减1,且每次循环i的步常是加1,j是每次减1,当它们符合i<=j条件是就执行for中的代码,其实它只是比平时多了一个j而已,它就好比

int j=s.length-1 ;
for ( i=0,;i<=j; i++) {


j--;
}  --------------------编程问答-------------------- for ( i=0,j=s.length-1;i<=j; i++,j--)i为初值,而那个s.length-1为s数组的长度,i<=j是循环判断语句,如果i<=j那么久继续执行for语句下面的语句,不满足就跳出来不执行for语句下面的程序;然后每次循环都是使得i自动交1,而j自动减1。 --------------------编程问答-------------------- 额,把书再看看吧《 --------------------编程问答-------------------- 呵呵 学习学习  --------------------编程问答--------------------
引用 4 楼 g37100 的回复:
Quote: 引用 3 楼 Candylibin 的回复:

Lz这段代码应该是类似这样的


Java code?123456int i,j;        int[] s = new int[15];        for ( i=0,j=s.length-1;i<=j; i++,j--)        {                                     }

意思就是说,i初始化为0,j的值小……

谢谢您的解答,这个语句用到倒序排序上了。
for ( i=0,j=s.length-1;i<=j; i++,j--){
char temp=s[i];
s[i]=s[j];
s[j]=temp;
}   
System.out.print(s);
为什么这么写呢?

 for ( j=s.length-1;j>0; j--)
System.out.print(s); 这个也可以实现倒序输出



上面那个多此一举了吧。先把数组内的顺序给倒序了。数组发生改变了。然后再输出。按照下面的方法就是直接倒序输出。数组并没有发生改变~ --------------------编程问答-------------------- 就是做了优化的for循环  不用每次计算length
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,