有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我们不能将ArrayList<Integer>传递给具有(Integer…)的方法参数

我试图做这个Java如何编程任务:“编写一个计算产品的应用程序 使用可变长度参数列表传递给方法“product”的一系列整数的

我得到一条错误消息,方法乘积(整数…)在类型中,VarLenArgumentList不适用于 参数(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;
}

共 (2) 个答案

  1. # 1 楼答案

    Integer...参数接受任意数量的Integer对象或数组Integer[]。因为ArrayList<Integer>不是Integer[],所以它不被接受

    ArrayList不是数组,而是Collection,而java中的数组是另一个对象

    不过,您可以使用^{}方法轻松地将ArrayList转换为数组。但请注意,它将是一个不同的对象,这主要在您只想从集合中读取而不是写入时非常有用

  2. # 2 楼答案

    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;
        }