2015-05-05 30 views
0

我試圖做到這一點的Java如何編程任務:「寫,計算一系列整數傳遞給方法‘產品’使用可變長度參數列表的產品 的appliaction爲什麼我們不能將ArrayList <Integer>傳遞給帶有(Integer ...)參數的方法?

我得到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; 
} 
+0

不是,這不是一個騙局,至少不是爲了鏈接的問題。這裏的問題主要是'不是ArrayList的數組?',這不是鏈接線程中的問題。 – amit

+0

在你發佈'} while(flag == -1)的例子中;'應該是'} while(input!= -1)'以匹配你的打印條件,同時'System.out.printf'應該需要'String格式''我沒有在你的例子中看到的論點,所以我猜你的意思是'System.out.print'或'System.out.println'。 – anonymous

+0

當然你是對的。我編輯了我的帖子並對其進行了改進。 – enhancedJack

回答

3

Integer...參數接受任意數量的Integer對象或數組Integer[]。由於ArrayList<Integer>不是Integer[],因此不接受。

ArrayList不是數組,它是Collection,而java中的數組是不同的對象。

然而,您可以使用toArray(T)方法輕鬆地將您的ArrayList轉換爲數組。但請注意,它將是一個不同的對象,並且這主要用於只想從集合中讀取而不寫入集合的情況。

+0

我做到了這一點,它的工作原理。謝謝。 – enhancedJack

0

完成任務的另一種方式是什麼?

您可以將整數列表傳遞到方法中。

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

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

    return total; 
    } 
+0

但是這不會完成這個要求:「使用可變長度參數列表」。 – enhancedJack

相關問題