我想打印数组后半部分的内容,或将其复制到另一个新数组。
我有这个方法:
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循环之外的语句,但它只是说它找不到'我'。我该如何解决这个问题?
答案 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中每个索引的值。你想让它在两个循环之后打印一次吗?