无法反转另一个数组中的数组值 请指导我如何反转另一个数组中的数组值 我也使用了带有temp变量的swap方法,但它没有效果
import java.util.Scanner;
public class ArrayHW {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("please enter the lenght of the array:");
int len = in.nextInt();
int k = 0 ;
int[] array = new int [len];
int[] invarr = new int[len];
for( int i = 0; i < len ; i++ ){
System.out.println("please enter the values:");
array[i] = in.nextInt();
}
//using for loop
for( int i=0 ; i < len ; i++ ){
System.out.println("the array in normal case is:" + (i+1) + "\t" + array[i]);
}
/*for (int nav : array) {
System.out.println(nav);
}*/
for( int i = len ; i >= 0 ; i--)
{
invarr[k] = array[i];
System.out.println(invarr[k]);
k++;
}
}
}
答案 0 :(得分:5)
您可以使用Collections util class
中的reverse方法List < Object > list = Arrays.asList(arr);
Collections.reverse(list);
Object[] res = list.toArray();
答案 1 :(得分:3)
您可能遇到IndexOutofBoundException
,因为您的反转数组的循环以i=len
开头。数组遍历从len-1
到0
。所以将你的循环改为:
for( int i = len -1; i >= 0 ; i--)
{
invarr[k] = array[i];
k++;
}
答案 2 :(得分:2)
您可以用这种方式反转数组
int[] arr=new int[]{1,4,5,2};// index of this array are 0,1,2,3
int[] reverseArr=new int[arr.length];
int j=0;
for(int i=arr.length-1;i>=0;i--){ // considering arr from reverse order
reverseArr[j]=arr[i];
j++;
}
代码中的问题
for( int i = len ; i >= 0 ; i--) // there is no index in array for i = len
您的for循环应更正为
for( int i = len-1 ; i >= 0 ; i--)
答案 3 :(得分:1)
您应该从len - 1
开始,因为索引从零开始。以这种方式改变你的最后一个循环:
for( int i = len-1; i >= 0 ; i--)
{
invarr[k] = array[i];
System.out.println(invarr[k]);
k++;
}
答案 4 :(得分:0)
您可以使用
Arrays.sort(arr, Collections.reverseOrder());