for ( i=0,j=s.length-1;i<=j; i++,j--) 初学这个语句不明白,等同什么 i=0;j=s.length-1;while(i<=j){ i++; j--;} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 初始条件: 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体会体会 其实条件就是 只要咱们俩还有距离,那就继续取中查找 谢谢您的解答,这个语句用到倒序排序上了。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 ( 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。 谢谢您的解答,这个语句用到倒序排序上了。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.lang.ClassNotFoundException怎么解决啊,请哪位高手帮帮忙! java获取程序运行时间 用Java来实现一个数的阶乘 请推荐几本Java 图象处理方面的资料,谢谢 请教关于24算法的问题,重分酬谢 学习J2ee应该是怎么样的一个顺序比较好 线程空间与进程空间 有几个基础问题,请朋友帮助 怎样获取一个网站的所有目录,好使的连接和不好使的连接都显示出来(当然用java)在线关注!!!!! Java可以写windows桌面客户端应用自动化吗?有大佬知道的请赐教,谢谢! 请问下这两种写法,有什么区别?哪一个好一些。 java学习
判断条件:;i<=j;
判断成立后的循环执行: i++,j--
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体会体会 其实条件就是 只要咱们俩还有距离,那就继续取中查找
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 ( i=0,;i<=j; i++) {
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); 这个也可以实现倒序输出
上面那个多此一举了吧。先把数组内的顺序给倒序了。数组发生改变了。然后再输出。按照下面的方法就是直接倒序输出。数组并没有发生改变~