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

g37100 2013-04-19 06:07:49
for ( i=0,j=s.length-1;i<=j; i++,j--) 初学这个语句不明白,等同什么呢?那位高手帮忙解答下。。。。
...全文
1969 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunbo624 2013-12-02
  • 打赏
  • 举报
回复
就是做了优化的for循环 不用每次计算length
逍遥jc 2013-12-02
  • 打赏
  • 举报
回复
引用 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); 这个也可以实现倒序输出 [/quote] 上面那个多此一举了吧。先把数组内的顺序给倒序了。数组发生改变了。然后再输出。按照下面的方法就是直接倒序输出。数组并没有发生改变~
cxbtoone 2013-11-29
  • 打赏
  • 举报
回复
呵呵 学习学习
  • 打赏
  • 举报
回复
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--; }
livend 2013-05-07
  • 打赏
  • 举报
回复
额,把书再看看吧《
linhu007 2013-05-07
  • 打赏
  • 举报
回复
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。
雪落无痕 2013-04-19
  • 打赏
  • 举报
回复
引用 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--) { ……
效果是一样的
Candylibin 2013-04-19
  • 打赏
  • 举报
回复
引用 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--) { ……
你上面那个是换位操作吧,说白了就是前一个向后 后一个向前(交换位置),那样走, 你第二种是从尾部最后一个元素开始打印数组(倒着打印数组),直到这个数组的头部
g37100 2013-04-19
  • 打赏
  • 举报
回复
引用 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); 这个也可以实现倒序输出
Candylibin 2013-04-19
  • 打赏
  • 举报
回复
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体会体会 其实条件就是 只要咱们俩还有距离,那就继续取中查找
失落夏天 2013-04-19
  • 打赏
  • 举报
回复
初始条件: i=0,j=s.length-1 判断条件:;i<=j; 判断成立后的循环执行: i++,j--
iamascv 2013-04-19
  • 打赏
  • 举报
回复
i=0; j=s.length-1; while(i<=j){ i++; j--; }

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧