2011-11-03 29 views
5

我對Java比較陌生,並且沒有指針的引用傳遞給我一點困惑。我編寫了一個家庭作業函數,它要求我返回用戶輸入的長度,並將使用輸入分配給傳入的數組,當方法退出時,用戶輸入數組丟失,出了什麼問題。當退出方法時,Java陣列丟失了

public static int readArray(char[] intoArray) 
    { 
     char[] capture = captureInputAsCharArray(); //User input comes back as char[] 
     System.arraycopy(intoArray,0, capture, 0, capture.length); 

     return capture.length; 
    } 

public static main(String[] args) 
{ 
     size = readArray(arrItem7); // item 7 
     System.out.println(size); 
     printOneInLine(arrItem7); // prints individual elements of array 
} 
+1

你在哪裏聲明arrItem7? – lc2817

+0

看到這篇文章,瞭解如何Java傳遞對象:http://stackoverflow.com/questions/7893492/is-java-really-passing-objects-by-value/7893495#7893495 –

+3

他傳遞他們就好了。他只是把它們倒在'arraycopy'中。 –

回答

7

因爲你有向後的參數System.arraycopy()

http://download.oracle.com/javase/6/docs/api/java/lang/System.html

public static void arraycopy(Object src, 
          int srcPos, 
          Object dest, 
          int destPos, 
          int length) 

交換intoArraycapture

System.arraycopy(capture,0, intoArray, 0, capture.length); 
+1

+1用於識別真正的問題在這裏 –

+0

好點,年輕padawan! – DarthVader

-2

該引用本身是通過值傳遞的。在這種情況下,您應該返回非常長的數組(capture)本身。

0

做你想做的事(讓用戶輸入和返回它的大小)是什麼,你可以這樣做:

import java.util.*; 


class Main{ 
    public static void main(String argv[]) 
    { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter something"); 
    String line = sc.nextLine(); 
    char [] my_array = line.toCharArray(); 
    System.out.println("You entered an input of length "+line.length()); 
    } 

} 

它會給出這個:

$ java Main 
Enter something 
Hello 
You entered an input of length 5 
+0

這不是他說他的功課需要... –

+0

好吧,現在呢? – lc2817