我想到了,尝试了不同的事情大约一个小时但却无法想出任何东西。我不想在这里发帖,因为我想弄清楚自己,但是我只是得到了一些东西
class Exercise5
{
public static void main ( String[] args )
{
int[] val = {0, 1, 2, 3};
int temp;
System.out.println( "Original Array: "
+ val[0] + " " + val[1] + " " + val[2] + " " + val[3] );
// reverse the order of the numbers in the array
for( temp = 0; temp < val.length; temp++) {
val[temp] = val[3 - temp];
}
System.out.println( "Reversed Array: "
+ val[0] + " " + val[1] + " " + val[2] + " " + val[3] );
}
}
它'打印出3 2 2 3,我尝试了不同的策略
答案 0 :(得分:3)
<强>问题:强>
temp = 0
val[0] =val[3];
temp = 1
val[1] =val[2];
temp = 2
val[2] =val[1];
temp = 3
val[3] =val[0];
<强>解决方案:强>
使用另一个数组来保存反转值或使用临时变量(0&amp; 3,1&amp; 2)一次交换两个值
答案 1 :(得分:2)
for( temp = 0; temp < val.length; temp++) {
val[temp] = val[3 - temp];
}
这是做什么的;
val = [0, 1, 2, 3]
val[0] = val[3]
=> val = [3, 1, 2, 3]
val[1] = val[2]
=> val = [3, 2, 2, 3]
val[2] = val[1]
=> val = [3, 2, 2, 3]
val[3] = val[0]
=> val = [3, 2, 2, 3]
你想要做的是将索引循环到数组的一半,交换低值和高值。
答案 2 :(得分:0)
试试这个
// reverse the order of the numbers in the array
for( temp = 0; temp < val.length/2; temp++) {
int tmp = val[temp];
val[temp] = val[3 - temp];
val[3 - temp] = tmp;
}
答案 3 :(得分:0)
你必须使用另一个数组。您正在根据需要更改原始值。或者如果长度是均匀的,你可以交换它们
答案 4 :(得分:0)
首先,
val [temp] = val [3 - temp];
只将val [3-temp]的值分配给val [temp],它不会交换它们。如果要交换它们,则需要使用临时变量。
其次,
你只需要在数组的中途迭代,而不是一直遍历它。
答案 5 :(得分:0)
val [temp] = val [3 - temp];
当temp = 0
时val [0] = val [3-0] val [0] = val [3] = 3
当temp = 1
时val [1] = val [3-1] val [1] = val [2] = 2
当temp = 2
时val [2] = val [3-2] val [2] = val [1] = 2(上一步你可以看到val [1] = 2)
当temp = 3
时val [3] = val [3-3] val [3] = val [0] = 3
结果3 2 2 3
答案 6 :(得分:0)
这一行是for循环中的罪魁祸首:
val[temp] = val[3 - temp];
让我们回顾迭代,看看它在做什么。
答案 7 :(得分:0)
大多数人都给了你分析。这是您可以解决的问题。
再声明一个int数组
int[] val = {0, 1, 2, 3};
int temp;
int[] reverseVal = new int[val.length];
添加到此数组的反转值
for( temp = 0; temp < val.length; temp++) {
reverseVal [temp] = val[val.length - temp];
}