繁体   English   中英

如何使用旧数组的一部分在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()方法中合并数组

如何在Java中连接两个数组?

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

类似于以下内容的东西将起作用(并且它不会创建新变量来促进交换):

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM