2016-03-25 18 views
1

Ich habe eine Methode doSomething(), die Array als Parameter akzeptiert. Wenn ich Array wie unten passieren:Fehler beim Übergeben des Arrays als Parameter in Java

package org.my; 

public class ArrayMistry { 

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

    public static void doSomething(int[] params) { 

    } 

} 

Ich erhalte Kompilierungsfehler:

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)

Hinweis:

wenn ich als Gebrüll dann sein OK passieren:

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

diesen Beitrag lesen, die das Problem mehr in der Tiefe, erklärt: http://stackoverflow.com/questions/5387643/array-initialization-syntax-when-not-in-a-declaration –

Antwort

1

Arrays geführt sind. Sie müssen ein Array-Objekt mit [1,2] erstellen und die Referenz dieses erstellten Objekts an dosomething übergeben. Das Schlüsselwort new weist Speicherplatz für die Erstellung dieses int Arrays zu.

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

Es ist weil Sie {1, 2} nicht als neues Array deklarieren. Es muss als new int[]{1,2} deklariert werden, um ordnungsgemäß zu funktionieren, andernfalls erstellen Sie kein Array.

0

Sie müssen ein Array erstellen, das an eine Methode übergeben wird, weil Sie die Methode auf diese Weise initialisiert haben. Der Grund, warum doSomething({1,2}); nicht funktioniert, liegt darin, dass das Array nicht initialisiert wurde und {1, 2} kein Array ist, sondern nur einige Zahlen in Klammern. wenn Sie einen Array schicken wollten haben Sie so etwas wie diese

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

Ihre Methode doSomething() speziell akzeptieren einen Array von ganzen Zahlen als Parameter zu tun.

Hinweis in den beiden Fällen, in denen es funktioniert, entweder eine vorhandene Array übergeben, oder einen neuen erstellt, wenn es in vorbei.

In Ihrem ursprünglichen Beispiel Sie eine beliebige Menge von Zahlen sind vorbei ohne Speicher reserviert oder geben Sie den angegebenen Wert ein.

0

Eine andere Möglichkeit, das Problem zu lösen durch die Bezugnahme als Parameter an die Funktion wie folgt übergeben:

durch Verweis
doSomething(new int[]{1,2}); 
Verwandte Themen