【问题标题】:How do I use parts of an old array to create a new one in java?java - 如何使用旧数组的一部分在java中创建一个新数组?
【发布时间】:2016-02-04 11:03:39
【问题描述】:

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

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.

【问题讨论】:

  • 错误是什么?是消息的奇怪格式吗?这是因为数组不会自动转换为字符串。您可能想尝试 System.out.println("Your reversed array is "+Arrays.toString(reverseArray(array)));
  • 啊,明白了。非常感谢。

标签: java arrays substring


【解决方案1】:

你必须从java.util.Arrays导入Arrays

【讨论】:

  • 知道了,现在我遇到了将旧数组的部分组合到新数组中的问题。它不喜欢 +。
【解决方案2】:

试试这样的:

*编辑:如果必须创建新数组,只需创建 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;
  }
 }

【讨论】:

    【解决方案3】:

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

    How can I concatenate two arrays in Java?

    【讨论】:

      【解决方案4】:

      只交换传入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;
      }
      

      【讨论】:

      • 谢谢,这帮我弄明白了。
      • @Colleen 不用担心,如果它解决了您的问题,请点击勾选标记接受它作为答案
      • 所以现在一切都编译了,但我得到了一个奇怪的输出。我用我的输出更新了问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2015-02-28
      • 2011-05-25
      • 2013-12-10
      相关资源
      最近更新 更多