我有一个方法doSomething()
,它接受Array作为参数。当我像下面那样传递数组时:
package org.my;
public class ArrayMistry {
public static void main(String ... args) {
doSomething({1,2});// Compilation Error
}
public static void doSomething(int[] params) {
}
}
我收到编译错误:
线程中的异常" main" java.lang.Error:未解析的编译 问题:令牌上的语法错误" doSomething",@之前的预期 此标记语法错误,插入"枚举标识符"去完成 EnumHeader语法错误,插入" EnumBody"去完成 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 :(得分:1)
通过引用传递数组。您需要使用[1,2]创建一个数组对象,并将该创建对象的引用传递给dosomething
。 new
关键字为创建此int
数组分配空间。
int[] arr = new int[]{1,2};
doSomething(arr);
答案 1 :(得分:0)
这是因为您没有将{1,2}声明为新数组。必须将其声明为new int[]{1,2}
才能正常运行,否则您不会创建数组。
答案 2 :(得分:0)
您必须将数组传递给方法,因为您以这种方式初始化了方法。这个doSomething({1,2});
不起作用的原因是因为数组尚未初始化且{1,2}不是数组,所以它只是括号中的一些数字。如果你想发送一个数组,你必须做这样的事情
int[] p = {1,2};
doSomething(p);
答案 3 :(得分:0)
您的方法doSomething()专门接受整数数组作为其参数。
请注意,在它工作的两种情况下,您要么传递现有数组,要么在传入时创建一个新数组。
在原始示例中,您传递的是一组没有保留内存或指定类型的任意数字。
答案 4 :(得分:0)
解决问题的另一种方法是将引用作为参数传递给函数,如下所示:
doSomething(new int[]{1,2});