今天看书,有道题不会,求解:
假设以下代码用于将数组中的内容进行反转,解释为什么它是错误的,以及如何进行修正?
int[] list={1,2,3,4,5};
for(int i=0,j=list.length-1;i<list.length;i++,j--){
int temp=list[i];
list[i]=list[j];
list[j]=temp;
}
今天看书,有道题不会,求解:
假设以下代码用于将数组中的内容进行反转,解释为什么它是错误的,以及如何进行修正?
int[] list={1,2,3,4,5};
for(int i=0,j=list.length-1;i<list.length;i++,j--){
int temp=list[i];
list[i]=list[j];
list[j]=temp;
}
Java不会,不过不影响。这题与语言类型无关。
给你个PHP的答案:
代码:
$list = [1,2,3,4,5];
for ($i = 0, $j = count($list) - 1;$i < count($list);$i++, $j--) {
$temp = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $temp;
echo '$i='.$i.' ,$j='.$j."\n";
print_r($list);
}
输出:
$i=0 ,$j=4
Array
(
[0] => 5
[1] => 2
[2] => 3
[3] => 4
[4] => 1
)
$i=1 ,$j=3
Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 2
[4] => 1
)
$i=2 ,$j=2
Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 2
[4] => 1
)
$i=3 ,$j=1
Array
(
[0] => 5
[1] => 2
[2] => 3
[3] => 4
[4] => 1
)
$i=4 ,$j=0
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
正确代码(未严格测试):
$list = [1,2,3,4,5];
for ($i = 0, $j = count($list) - 1;$i < count($list) / 2;$i++, $j--) {
$temp = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $temp;
echo '$i='.$i.' ,$j='.$j."\n";
print_r($list);
}
10 回答11.1k 阅读
15 回答8.3k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
因为循环的终止条件写错了啊,终止提交应该是i >= j.代码如下:
记住代码格式规范也很重要啊,操作符前后加空格啊!!!