该程序旨在反转数组中的值。程序运行时,显示的唯一值是3和2,然后结束。我一直在网上看,但我无法弄清楚为什么会这样。在SOP中切换temp [i]给出的值给出0和1的值然后结束。
int[] val = {0, 1, 2, 3};
int temp;
for(int i=0;i<val.length/2;i++)
{
temp=val[i];
val[i]=val[val.length - 1 - i];
val[val.length - 1 - i]=temp;
System.out.println(val[i]);
}
答案 0 :(得分:3)
因为你的for循环只迭代值0和1,所以最后它只打印第0和第1个元素,试试
int[] val = {0, 1, 2, 3};
int temp;
for(int i=0;i<val.length/2;i++) {
temp=val[i];
val[i]=val[val.length - 1 - i];
val[val.length - 1 - i]=temp;
}
for(int i=0;i<val.length;i++){
System.out.println(val[i]);
}
答案 1 :(得分:1)
使用val.lenth / 2只遍历数组的一半是有意义的,你可以随时交换值。在尝试打印整个阵列时,只遍历一半的数组是没有意义的。尝试使用另一个for循环打印出整个数组的内容。
编辑:我尽量不给出答案
答案 2 :(得分:1)
for(int i=0;i<val.length/2;i++)
val.length / 2 = 4/2 = 2,以便for循环只运行两次。这就是为什么它只打印3和2.
int[] val = {0, 1, 2, 3};
int temp;
for(int i=0;i<val.length;i++)
{
if(i<val.length/2){
temp=val[i];
val[i]=val[val.length- 1 - i];
val[val.length- 1 - i]=temp;
}
System.out.println(val[i]);
}