2014-09-03 43 views
-3

如何在follwing代碼總和的ArrayList

import java.util.ArrayList; 
import java.util.List; 

public class SumInArrayList { 

public static void main(String[] args) { 

    List<Number> numbers = new ArrayList<Number>(); 
    numbers.add(new Number(44)); 
    numbers.add(new Number(55)); 
    numbers.add(new Number(11)); 
    numbers.add(new Number(1)); 

    for (int i = 0; i < numbers.size(); i++) { 
     System.out.println(numbers.get(i)); 
    } 
    } 
} 
+0

不完全確定你在問什麼 - 你想找到列表中所有數字的總和? – jackarms 2014-09-03 05:14:58

+0

嗯,你在那裏。一旦你得到了數字,你不應該用它們的整數值對它們進行某種數學運算嗎? – Makoto 2014-09-03 05:15:21

+2

「Number」是什麼類型的對象? – Jens 2014-09-03 05:21:28

回答

0

算上ArrayList中收集數之和你是八九不離十。您應該將它們一起添加到變量中,而不是打印這些元素。將變量初始化爲0,然後合併元素。

此外,您不能實例化類Number,因爲它是一個抽象類。 您應該使用與您要使用的數字相對應的更具體的類。 根據你的代碼,Integer類將工作。

另一件事,因爲java有unboxing,你可以直接添加原始類型。意思是說,你可以說numbers.add(44)而不是numbers.add(new Integer(44));

public static void main(String[] args) { 

    List<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(44); 
    numbers.add(55); 
    numbers.add(11); 
    numbers.add(1); 

    int sum = 0; 
    for (int i = 0; i < numbers.size(); i++) { 
     sum = sum + numbers.get(i); 
    } 

    System.out.println("Sum is " + sum); 
} 
1

你快到了。以下是我將如何做到這一點。

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

     List<Integer> numbers = new ArrayList<Integer>(); 
     numbers.add(new Integer(44)); 
     numbers.add(new Integer(55)); 
     numbers.add(new Integer(11)); 
     numbers.add(new Integer(1)); 

     int total = 0; 
     for (int i = 0; i < numbers.size(); i++) { 
      total += numbers.get(i); 
     } 

     System.out.println(total); 
    } 
} 

正如你可以看到我用Integer爲簡單起見。您可以將其更改爲您想要的任何數據類型:Byte, Double, Float, Integer, Long, Short。如果你確實需要使用Number,那麼你必須首先爲其所有抽象方法提供實現,因爲它是一個抽象類。像這樣:

numbers.add(new Number() { 

    @Override 
    public int intValue() { 
     return 44; 
    } 

    @Override 
    public long longValue() { 
     return 44l;     
    } 

    @Override 
    public float floatValue() { 
     return 44.0f; 
    } 

    @Override 
    public double doubleValue() { 
     return 44.0 
    } 
}); 

但是不要這麼做,請從所有已經實現這些的類中進行選擇。