Java 计算数组列表的乘法

Java 计算数组列表的乘法,java,Java,我被下面的答案困住了,这个问题需要使用ArrayList和递归。下面的代码是我到目前为止得到的,现在我被卡住了。我做了很多研究,但仍然没有找到答案。如果可以,您可以解释并提供一些答案,谢谢 数组的元素是:123456-1 {1,2,3,4,5,6}的乘法是720 此外,如果用户输入负数,ArrayList将不会乘以该数字。请帮忙 public class Arraylist{ public static void main(String[] args) { Scanne

我被下面的答案困住了,这个问题需要使用ArrayList和递归。下面的代码是我到目前为止得到的,现在我被卡住了。我做了很多研究,但仍然没有找到答案。如果可以,您可以解释并提供一些答案,谢谢

数组的元素是:123456-1

{1,2,3,4,5,6}的乘法是720

此外,如果用户输入负数,ArrayList将不会乘以该数字。请帮忙

public class Arraylist{
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.print("The elements of your array are: ");
        int num = scan.nextInt();
        ArrayList<Integer> element = new ArrayList<Integer>();
        while (true){
            element.add(scan.nextInt());

            }


        }

    }
公共类数组列表{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“数组的元素为:”);
int num=scan.nextInt();
ArrayList元素=新的ArrayList();
while(true){
元素添加(scan.nextInt());
}
}
}

考虑负值终止循环

Scanner scan=新的扫描仪(System.in);
System.out.print(“数组的元素为:”);
ArrayList元素=新的ArrayList();
int ans=1;
while(true){
int num=scan.nextInt();
if(num<0)
打破
元素。添加(num);
ans*=num;
}
系统输出打印LN(ans);

定义递归函数以获取产品

public class Arraylist{
    public static int getProduct(ArrayList<Integer> elements, int index) {
        if(index == elements.size() ) return 1;
        else
            return (elements.get(index) > 0)? 
                    elements.get(index): 1 * 
                    getProduct(elements, i+1);

    }
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.print("Enter number of elements:");
        int num = scan.nextInt(), prod = 1;
        ArrayList<Integer> elements = new ArrayList<Integer>();
        System.out.println("Enter " + num +  " elements:");

        for(int i = 0; i < num; i++) {
         elements.add(scan.nextInt());
        }
        prod = getProduct(elements);
         System.out.println("Product is: " + prod);
    }
公共类数组列表{
公共静态int-getProduct(ArrayList元素,int索引){
if(index==elements.size())返回1;
其他的
返回(elements.get(index)>0)?
元素。获取(索引):1*
getProduct(元素,i+1);
}
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入元素数:”);
int num=scan.nextInt(),prod=1;
ArrayList元素=新的ArrayList();
System.out.println(“输入”+num+“元素:”);
for(int i=0;i
“现在我太困了”-你被哪一部分卡住了?你应该从正确读取输入开始,可能不是在一个无限循环中。然后你只是在整个列表上迭代并乘法。不知道为什么要使用递归。这似乎很简单。正如Amongalen所说,存储传入值,创建一个变量,你可以在其中存储中间值编辑乘法值,并在列表上循环。每次输入新值时,将其与更新的乘法值相乘(使用乘法复合赋值运算符),确保它不是负值。首先写出一些伪代码,然后尝试对其进行编码。更新为使用递归更新为使用递归