2011-07-04 46 views
0

我想打印數組後半部分的內容,或將其複製到另一個新數組。打印數組上半部分/後半部分的內容

我有這樣的方法:

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

,那是你的問題? – woliveirajr

+0

是的,這就是問題 – Labra

回答

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

讓我知道!

+0

是的,我試過,但它不打印,因爲它應該例如與輸入: \t int [] array = new int [8]; \t array [0] = 0; \t array [1] = 1; \t array [2] = 1; \t array [3] = 0; \t array [4] = 0; \t array [5] = 0; \t array [6] = 2; array [7] = 2; 它會打印2222不是0022 – Labra

+0

我將數組的最後一半複製到一個新的數組中,並打印出新數組的內容。因此,如果初始數組由上面給出的「數組」表示,則新數組應該包含內容0,0,2,2,因爲這些數組是數組後半部分的元素。 – Labra

+0

是的,它是這一個j = anArray.length/2 – Labra

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中每個索引的值。你想在兩個循環之後打印一次嗎?

+0

只是FYI(只是注意到)第二個for循環不編譯看到我的答案蛾詳細 – RMT

1

不能分割數組INT []在2:(anArray)/2

1

我覺得(1)要元素上半複製到一個新的數組。然後你只需要一個循環(如果你想與循環做):

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)剛剛看了你的評論到另一個答案,我想我這樣做是正確

+0

只是一個注意,該問題沒有定義waht會發生,如果該數組有偶數個元素... @Labra應該指定它:) – woliveirajr

+0

@woliveirajr - *甚至*大小是好的,*奇數*大小是未定義的。這就是爲什麼我在我的片段中添加了一條小評論。 –

+0

是的,你是對的 – woliveirajr

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]); 
    } 
} 
要打印數組的後半部分的內容
相關問題