如何使用旧数组的一部分在 java 中创建新数组?

How do I use parts of an old array to create a new one in java?

所以我需要创建一个新数组来交换现有数组的第一个和最后一个值。这是我目前所拥有的:

import java.util.Scanner;
import java.util.Arrays;
public class P9_ArrayManipulate
{    public static void main (String[] args)
 {   Scanner in = new Scanner(System.in);
    System.out.println("Please enter seven numbers for an Array.");
    int []array = new int[7];
    int total = 0;
    for (int i = 0; i < 7;i++){
            array[i] = in.nextInt();
    }
    System.out.println("Your reversed array is "+reverseArray(array));
    System.out.println("Your swapped array is "+swapArray(array));
    System.out.println("Your array without even numbers is "+evenArray(array));
    System.out.println("The program has finished calling array methods.");
}
 public static int []reverseArray(int []array)
{   int[] reversed = new int[array.length];
    int i;
    for(i=0; i < array.length; i++)
    {
        reversed[i] = array[(array.length - i -1)];
    }
    return reversed;
}
public static int []swapArray (int []array)
{   
  array[0] += array[array.length-1];
  array[array.length-1] = array[0] - array[array.length-1];
  array[0] -= array[array.length-1];
  return array;
}
public static int []evenArray(int []array)
{   for (int i = 0; i < array.length;i++){
    if (array[i]%2 !=0)
    {array[i] = 0;}
    i++;}
    return array; 
}

}

一切都正确编译(据我所知),但我遇到了一个奇怪的 运行 时间错误。七次输入后,我得到这个作为我的输出: Your reversed array is [I@b4d079 Your swapped array is [I@3644d1 Your array without even numbers is [I@3644d1 The program has finished calling array methods.

您必须从 java.util.Arrays

导入 Arrays

尝试这样的事情:

*编辑:如果必须创建新数组,只需创建 int newarray[] = method(); 而不是 array[]=method();

  import java.util.Scanner;
  public class Array 
 {
public static void main (String[] args)
{   Scanner in = new Scanner(System.in);

System.out.println("Please enter seven numbers for an Array.");
int []array = new int[7];
for (int i = 0; i < 7;i++){
    array[i] = in.nextInt();
}

array = reverseArray(array);
System.out.println("Your reversed array is :");
for (int i = 0; i < array.length; i++) {
    System.out.print(array[i]+" ");
}
System.out.println();

array = swapArray(array);
System.out.println("Your swapped array is :");
for (int i = 0; i < array.length; i++) {
    System.out.print(array[i]+" ");
}
//          System.out.println("Your array without even numbers is "+evenArray(array));
System.out.println();
System.out.println("The program has finished calling array methods.");
}
public static int[] reverseArray(int []array)
{   int left = 0;
int right = array.length-1;
while(left<right){
    int reverse = array[left];
    array[left]=array[right];
    array[right] = reverse;
    left++;
    right--;
}
return array;
}
public static int []swapArray (int []array)
{   
    int help = 0;
    help = array[0];
    array[0] = array[6];
    array[6] = help;

    return array;
  }
 }

您可以使用以下答案在 swapArray() 方法中合并数组

How can I concatenate two arrays in Java?

只交换传递给 swapArray() 函数的数组的第一个和最后一个值,而不是创建一个新数组 return 会容易得多。

像下面这样的东西会起作用(并且它不会创建一个新变量来促进交换):

public static int[] swapArray(int[] array) {
    array[0] += array[array.length-1];
    array[array.length-1] = array[0] - array[array.length-1];
    array[0] -= array[array.length-1];
    return array;
}