int[] arr={6,8,7,4,9,10,……}
要求编写一个程序,将数组的第一个元素的取值放到数组的最后一个元素,即arr变为:{8,7,4,9,10,.....6}。
求解答
这个简单,先将数组的第一个数据保存一下,即:
int FirstNum = arr[0];
然后将数组的每个数据与其后面的数据进行替换,即:
int v = 0;
for (int i = 0;i < arr.length - 1; i++)
{
v = arr[i+1];//获取后面的值
arr[i] = v;//将后面的值替换为前面的值
}
注意,这里我没用foreach循环而且条件语句是i < arr.length() - 1;之所以这样,是因为如果遍历到数组的最后一个数值,那么在i+1这个位置就会抛出一个数组越界的异常。所以是arr.length() -1
接着,我们将数组的最后一个值赋值为我们记录的数组的第一个值,即:
arr[arr.length-1] = FirstNum;
这样,一个数组的最后一个取值替换为第一个取值并将其他数据前移的代码就写好了。总代码如下:
int[] arr = new int[]{8,7,4,9,10,.....6};
int FirstNum = arr[0];
int v = 0;
for (int i = 0;i < arr.length - 1; i++)
{
v = arr[i+1];//获取后面的值
arr[i] = v;//将后面的值替换为前面的值
}
arr[arr.length-1] = FirstNum;
我们可以在最后面插入两个println语句来观察这种变化:
使用一个变量保存第一个数,然后使用一个循环,将第二个数到最后一个数都赋值给起前一个数,最后把保存的第一个数赋值给数组最后一个位置
使用拷贝方法也是一个不错的选择,代码量也比较少。
int[] arr = {6, 8, 7, 4, 9, 10};
int first = arr[0];
System.arraycopy(arr, 1, arr, 0, arr.length - 1);
arr[arr.length - 1] = first;