2016-03-25 14 views
1

Arrayをパラメータとして受け入れるメソッドdoSomething()があります。私は怒鳴るような配列渡すとき:Javaのパラメータとして配列を渡すことができません

Exception in thread "main" java.lang.Error: Unresolved compilation problems: Syntax error on token "doSomething", @ expected before this token Syntax error, insert "enum Identifier" to complete EnumHeader Syntax error, insert "EnumBody" to complete BlockStatements

at org.my.ArrayMistry.main(ArrayMistry.java:6)

注:

私は、その後のように怒鳴るそのOK渡す場合:

public static void main(String ... args) { 
    int[] p = {1,2}; 
    doSomething(p);// no Error 
    doSomething(new int[]{1,2});// no Error 
} 
+0

に深く、より問題を説明し、この記事を読む:http://stackoverflow.com/questions/5387643/array-initialization-syntax-when-not-in-a-declaration –

答えて

1
doSomething(new int[]{1,2}); 

配列は参照によって渡されます。 [1,2]で配列オブジェクトを作成し、その作成したオブジェクトの参照をdosomethingに渡す必要があります。 newキーワードは、このint配列を作成するための領域を割り当てます。

int[] arr = new int[]{1,2}; 
doSomething(arr); 
0

をイッツ

package org.my; 

public class ArrayMistry { 

    public static void main(String ... args) { 
     doSomething({1,2});// Compilation Error 
    } 

    public static void doSomething(int[] params) { 

    } 

} 

を私はコンパイルエラーを取得しています{1、2}を新しい配列として宣言していないためです。正しく機能するには、new int[]{1,2}と宣言されていなければなりません。そうでなければ、配列を作成していません。

0

このようにメソッドを初期化したため、メソッドに渡す配列を作成する必要があります。このdoSomething({1,2});が機能しない理由は、配列が初期化されておらず、{1,2}が配列ではないためです。あなたは配列を送信したい場合は、特にそのパラメータとしての整数の配列を受け取り、この

int[] p = {1,2}; 
doSomething(p); 
0

あなたの方法のdoSomething()のような何かをしなければなりません。それは働いていた、あなたが既存のアレイを通過したか、それを渡すときに、新しいものを作成し、両方のケースで

注意。

あなたの元の例では、あなたがいないメモリに確保して数字の任意のセットを渡しています、または指定されたタイプを入力します。

0

問題を解決する別の方法は、このような関数へのパラメータとしての参照を渡すことである。

関連する問題