Java 为什么可以';我们不能通过ArrayList<;整数>;到具有(整数…)参数的方法?

Java 为什么可以';我们不能通过ArrayList<;整数>;到具有(整数…)参数的方法?,java,arraylist,variadic-functions,Java,Arraylist,Variadic Functions,我试图做这个Java如何编程任务:“编写一个计算产品的应用程序 使用可变长度参数列表传递给方法“product”的一系列整数的 我得到一条错误消息,类型VarLenArgumentList中的方法乘积(Integer…)不适用于 参数(ArrayList)。如果Java将变长参数列表视为数组,为什么会这样?ArrayList不是数组吗 完成任务的另一种方式是什么 Scanner keyboard = new Scanner(System.in); int flag = 0; ArrayList&

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

我得到一条错误消息,类型VarLenArgumentList中的方法乘积(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;
}
扫描仪键盘=新扫描仪(System.in);
int标志=0;
ArrayList intArray=新的ArrayList();
做
{
System.out.print(“输入正整数或“-1”退出:”;
int input=keyboard.nextInt();
intArray.add(输入);
}while(flag!=-1);
产品(intArray);
}
公共静态整数乘积(整数…数字)
{
int-total=0;
for(整数元素:数字)
总数*=元素;
返回总数;
}

Integer…
参数接受任意数量的
Integer
对象或数组
Integer[]
。由于
ArrayList
不是
整数[]
,因此不接受该参数

ArrayList
不是数组,它是一个
集合
,而java中的数组是另一个对象


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

Integer…
参数接受任意数量的
Integer
对象或数组
Integer[]
。由于
ArrayList
不是
整数[]
,因此不接受它

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;
}
您可以将整数列表传递给该方法

 public static int product (List<Integer> integerList) 
    {
    Integer total = 0;

    for (Integer element : integerList)
        total *= element;

    return total;
    }
公共静态整数乘积(列表整数列表)
{
整数合计=0;
for(整型元素:整型列表)
总数*=元素;
返回总数;
}
完成任务的另一种方式是什么

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;
}
您可以将整数列表传递给该方法

 public static int product (List<Integer> integerList) 
    {
    Integer total = 0;

    for (Integer element : integerList)
        total *= element;

    return total;
    }
公共静态整数乘积(列表整数列表)
{
整数合计=0;
for(整型元素:整型列表)
总数*=元素;
返回总数;
}

不,这不是一个重复,至少对于链接的问题不是。这里的问题主要是
不是一个数组列表一个数组?
,这不是链接线程中的问题。在这个例子中,你发布了
}while(flag=-1);
应该是
}while(input!=-1)
要匹配您的打印条件,还需要
System.out.printf
需要一个
字符串格式
参数,我在您的示例中没有看到,所以我猜您的意思是
System.out.print
System.out.println
。当然,您是对的。我已经编辑了我的帖子并对其进行了改进。不,至少这不是重复不是针对链接的问题。这里的问题主要是
不是数组列出数组?
,这不是链接线程中的问题。在示例中,您发布了
}while(flag=-1);
应该是
}while(input!=-1)
要匹配您的打印条件,还需要
System.out.printf
需要一个
字符串格式
参数,我在您的示例中没有看到这个参数,所以我猜您的意思是
System.out.print
System.out.println
。当然,您是对的。我编辑了我的帖子并对其进行了改进。但这并不能完成这篇文章要求:“使用可变长度参数列表”。但这并不能满足要求:“使用可变长度参数列表”。