打印阵列上半部分/后半部分的内容

时间:2011-07-04 14:04:05

标签: java

我想打印数组后半部分的内容,或将其复制到另一个新数组。

我有这个方法:

public static void evaluateF3(int[] anArray) {

int[] array2 = new int[anArray.length/2];
    for( int i = 0; i<array2.length; i++) {
        for(int j= (anArray)/2; j<anArray.length;j++) {
            array2[i]= anArray[j];
            System.out.print(" "+ array2[i]);
        }
    }
}

然而,当我只打印一次时,它打印的内容与内部for循环的次数相同。我试过在for循环之外的语句,但它只是说它找不到'我'。我该如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

为什么不将它放在内部循环之外,但仍然在外部循环中,然后它应该正确打印出来。

顺便说一下:你的第二个循环中出现编译错误。要么说j= anArray.length;j = anArray.length/2。在任何一种情况下,您都忘记了.length

我发现你的问题你不需要第二个循环

public static void evaluateF3(int[] anArray) {
    int[] array2 = new int[anArray.length / 2];
    for (int i = 0; i < array2.length; i++) {
        array2[i] = anArray[i + (array2.length)];
        System.out.print(" " + array2[i]);
    }
}

让我知道!

答案 1 :(得分:1)

你不能将数组int []除以2:(anArray)/2

答案 2 :(得分:1)

我认为 (1)您希望将上半部分复制到新数组中。然后你只需要一个for循环(如果你想用循环做):

public static void evaluateF3(int[] anArray) {
  // assuming that anArray.size() is even!!

  int[] array2 = new int[anArray.length/2]; 
  for(int i = 0; i < array2.length; i++) {
    array2[i]= anArray[i + anArray.length/2];
    System.out.print(" "+ array2[i]);
  }
}

(1) 刚看完你对另一个答案的评论,我认为我做对了

答案 3 :(得分:1)

也许你想要做一些事情like this

public static void evaluateF3(int[] anArray) {
  int[] array2 = new int[anArray.length/2]; 
  for(int i = 0, j= array2.length; j<anArray.length;i++, j++) {
    array2[i]= anArray[j];
    System.out.print(" "+ array2[i]);
  }
}

int[] a = { 1, 2, 3, 4, 5, 6, 7, 8 };
evaluateF3(a); // 5 6 7 8
int[] a = { 0, 1, 1, 0, 0, 0, 2, 2 };
evaluateF3(a); // 0 0 2 2

答案 4 :(得分:1)

我相信您正在寻找的代码示例如下:

public static void evaluateF3(int[] array1) {
    int[] array2 = new int[array1.length / 2];

    System.arraycopy(array1, array1.length / 2, array2, 0, array2.length);

    for (int i = 0; i < array2.length; i++)
    {
        System.out.println(array2[i]);
    }
}

答案 5 :(得分:0)

for( int i = 0; i<array2.length; i++) 
{
  for(int j= (anArray.length)/2; j<anArray.length;j++)
  {
    array2[i]= anArray[j];
  }
   System.out.print(" "+ array2[i]);
}

这将打印array2中每个索引的值。你想让它在两个循环之后打印一次吗?