为什么我们不能将 ArrayList<Integer> 传递给带有 (Integer...) 参数的方法?
Why can't we pass ArrayList<Integer> to a method with (Integer...) parameter?
我正在尝试这样做 Java 如何编程任务:“编写一个计算乘积的应用程序
使用可变长度参数列表传递给方法 'product' 的一系列整数。
我收到错误消息,指出类型 VarLenArgumentList 中的方法 product(Integer...) 不适用于
参数(ArrayList)。为什么会这样,如果 Java 将可变长度参数列表视为数组? ArrayList 不是数组吗?
完成任务的另一种方法是什么?
Scanner keyboard = new Scanner(System.in);
int flag = 0;
ArrayList<Integer> intArray = new ArrayList<>();
do
{
System.out.print("Enter a positive integer or '-1' to quit:" );
int input = keyboard.nextInt();
intArray.add(input);
} while (flag != -1);
product(intArray);
}
public static int product (Integer... numbers)
{
int total = 0;
for (Integer element : numbers)
total *= element;
return total;
}
Integer...
参数接受任意数量的 Integer
对象,或数组 Integer[]
。由于 ArrayList<Integer>
不是 Integer[]
,因此不被接受。
ArrayList
不是一个数组,它是一个 Collection
,而 java 中的数组是一个不同的对象。
不过,您可以使用 toArray(T)
方法轻松地将 ArrayList
转换为数组。但请注意,它将是一个不同的对象,这主要在您只想从集合中读取而不是写入时很有用。
What is another way of completing the task?
您可以将整数列表传递给该方法。
public static int product (List<Integer> integerList)
{
Integer total = 0;
for (Integer element : integerList)
total *= element;
return total;
}
我正在尝试这样做 Java 如何编程任务:“编写一个计算乘积的应用程序 使用可变长度参数列表传递给方法 'product' 的一系列整数。
我收到错误消息,指出类型 VarLenArgumentList 中的方法 product(Integer...) 不适用于 参数(ArrayList)。为什么会这样,如果 Java 将可变长度参数列表视为数组? ArrayList 不是数组吗?
完成任务的另一种方法是什么?
Scanner keyboard = new Scanner(System.in);
int flag = 0;
ArrayList<Integer> intArray = new ArrayList<>();
do
{
System.out.print("Enter a positive integer or '-1' to quit:" );
int input = keyboard.nextInt();
intArray.add(input);
} while (flag != -1);
product(intArray);
}
public static int product (Integer... numbers)
{
int total = 0;
for (Integer element : numbers)
total *= element;
return total;
}
Integer...
参数接受任意数量的 Integer
对象,或数组 Integer[]
。由于 ArrayList<Integer>
不是 Integer[]
,因此不被接受。
ArrayList
不是一个数组,它是一个 Collection
,而 java 中的数组是一个不同的对象。
不过,您可以使用 toArray(T)
方法轻松地将 ArrayList
转换为数组。但请注意,它将是一个不同的对象,这主要在您只想从集合中读取而不是写入时很有用。
What is another way of completing the task?
您可以将整数列表传递给该方法。
public static int product (List<Integer> integerList)
{
Integer total = 0;
for (Integer element : integerList)
total *= element;
return total;
}