【发布时间】:2020-09-07 23:16:31
【问题描述】:
解决方案:我在其他地方使用sum,而我的代码的第二个变体没有更新它,因此问题出现在我的代码后面。相当愚蠢,也很尴尬,但是哦,好吧!
这是一段工作 Java 代码:
int sum = 0;
for (int r = 0; r < k; r++) {
sum += matrix[r][c];
}
totals[0][c] = sum;
r 行中的k 元素在sum 中相加,然后存储在totals 中相应索引处。
我的问题是,为什么我不能有这样的代码?
for (int r = 0; r < k; r++) {
totals[0][c] += matrix[r][c];
}
我没有使用单独的整数sum,而是简单地在totals 的正确索引中计算所述总和?这会产生不同且非常错误的输出。这是一个好习惯还是坏习惯?为了澄清totals此时被初始化为全0。
我感觉我遗漏了一些相当简单的东西,但我正在努力寻找有关该主题的任何有用信息,包括我发现的有关 Java 中数组性质的信息。
【问题讨论】:
-
“为了避免被我的同行认出而掩盖了变量”
-
如果
totals[0][c]被初始化为0,两个sn-ps应该产生相同的输出。 -
@Michael 我们不允许分享答案或大量代码,但这是关于 Java 的问题,而不是算法问题。使用我的“相关”命名变量,我正在适应的算法及其相关的问题将相当明显。
-
很公平。好吧,Eran 是对的,所以这个问题目前无法重现。您说它给出了“非常错误的输出”,但没有进一步的上下文,我们无法告诉您为什么更改这些行会改变行为。
-
对您的问题的简短回答是,如果您在进入循环时正在修改的“totals”中的位置为 0,它将按预期运行。至少,您应该包含一些示例输入/输出,它会产生正确和错误的答案。我认为您未显示的内容存在问题 - 如何管理
totals和c。您还可以使用调试器或打印语句来监控计算。
标签: java arrays variable-assignment assignment-operator