【发布时间】:2013-03-03 01:41:04
【问题描述】:
我正在尝试从数组列表中打印一个稀疏矩阵,其中列表中的每个对象都包含一对。对(对象)包含两个整数 - 位置和值。 [pos,val]。
位置是整个数字所在的稀疏矩阵中零的数量。因此,表示为 2d 矩阵,您可能具有例如以下内容:
[000 0023 100] (对不起格式,想象一个 3x3 矩阵)。无论如何,这个数组列表将是
aList = {[5,23], [6,1]}
现在,我使用以下代码尝试遍历它们以创建一个 6x6 矩阵。
public void printFullMatrix() {
int count = 0;
int temp = 0;
for (int i = 0; i < aList.size(); i++) {
for (int j = 0; j < aList.get(i).pos - temp; j++) {
count+=1;
if (count % size == 0){
System.out.println("");
} else {
System.out.print(0 + " ");
}
}
System.out.print(aList.get(i).val + " ");
temp = aList.get(i).pos;
}
}
问题是我得到以下打印结果(| 符号表示换行符):
[0 0 35 0 0 99 0 | 0 0 0 0 0 0 | 0 0 0 0 0 0 55| 0 0 20 0 0 0 0 | 0 0 0 3 0 0 0 | 0 0 0 0 0 2 ]
如您所见,第一行有 7 个元素,我发现在每行打印一个整数时,都会添加一个额外的 0。这显示在没有整数的第二行。很抱歉这篇文章,但我整天都在写这篇文章!
感谢您的回复!
【问题讨论】:
-
您可以为您的示例发布您的输入数组和预期的输出二维数组吗?
-
我想我对“位置是整个数字所在的稀疏矩阵中零的数量”感到困惑。所以一个 6x6 的例子可能会有所帮助
-
The position is the amount of zeros into the sparse matrix the whole numbers are located那么条目 [6,1] 没有意义。 -
预期的输出数组应该是(在 2d 中): [0 0 35 0 99 0 | 0 0 0 0 0 0 | 0 0 0 0 0 55 | 0 20 0 0 0 0 | 0 0 3 0 0 0 | 0 0 0 0 2 0] 输入数组是对象。在上面的示例中,您可能会看到“35”位于数组开头的第二个位置。因此,作为一个对象,这将作为 [2, 35] 输入到数组列表中。其余部分也是如此,但请记住该位置从矩阵的最开始开始 - 而不是行。问题是输出有一个额外的零添加到任何带有整数的行......
标签: java object loops arraylist