这是我尝试创建整数的2D ArrayList对象。 构造函数,fillArray和displayArray方法似乎有效(除了在我的每个整数周围显示括号,我不明白)。
问题在于我不知道如何处理我填充到2D ArrayList对象中的值以进行求和。
import java.util.ArrayList;
import java.util.Random;
public class TwoDArray
{
// fields
private ArrayList<Integer>[][] myList;
private int listSize;
// methods
/**
* The constructor creates a 2D ArrayList object.
*/
@SuppressWarnings("unchecked")
public TwoDArray(int size)
{
listSize = size;
myList = new ArrayList[size][size];
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
myList[i][j] = new ArrayList<Integer>(size);
}
/**
* The fillArray method fills the 2D ArrayList object
* with randomly generated numbers between 0 and 99.
*/
public void fillArray()
{
Random rand = new Random();
for (int i = 0; i < listSize; i++)
{
for (int j = 0; j < listSize; j++)
{
myList[i][j].add(rand.nextInt(100));
}
}
}
/**
* The displayArray method displays the 2D
* ArrayList object.
*/
public void displayArray()
{
for (int i = 0; i < listSize; i++)
{
for (int j = 0; j < listSize; j++)
{
System.out.print(myList[i][j] + " ");
}
System.out.println();
}
}
/**
* The getTotal method sums the values in the
* 2D ArrayList object.
* @return The sum of the values.
*/
public int getTotal()
{
int total = 0;
for (int i = 0; i < listSize; i++)
for (int j = 0; j < listSize; j++)
total += myList[i][j].get(j); // don't know what to do here
return total;
}
答案 0 :(得分:0)
您创建了一个ArrayList
数组,并且只为这些ArrayList
提供了 ONE 值,因此要将所有这些值相加,您只需要从中获取第一个值每个:
for (int i = 0; i < listSize; i++)
for (int j = 0; j < listSize; j++)
total += myList[i][j].get(0);
如果你尝试get(1)
,那么你会得到IndexOutOfBoundsException
,因为它不存在
在旁边,您创建ArrayList
,并仅存储 ONE 元素,因此只能使用int[][]
。
但是如果你需要在每个框中存储多个值,比如像这样添加它们:
for (int i = 0; i < listSize; i++){
for (int j = 0; j < listSize; j++){
myList[i][j].add(rand.nextInt(100));
myList[i][j].add(rand.nextInt(100));
myList[i][j].add(rand.nextInt(100));
}
}
// In each box you'll have a List, containing 3 values
要获得ALL int的总和,您可以这样做:
for (int i = 0; i < listSize; i++)
for (int j = 0; j < listSize; j++)
total += myList[i][j].stream().mapToInt(Integer::intValue).sum();
这将汇总每个方框的所有元素