【问题标题】:I don't know why my variables are getting these values [duplicate]我不知道为什么我的变量会得到这些值 [重复]
【发布时间】:2013-05-10 04:44:25
【问题描述】:
public int Gauss_Jordan(double[][] matrix, int numOfRows, int numOfCols) {
    for (int col_j = 0; col_j<numOfCols; col_j++) {
        row_i = nonzeros ++;
        System.out.println(row_i+" and "+nonzeros);
    }
    //return matrix;

    return 0;
}

在上面名为“Gauss_Jordan”的方法中,您可以看到一个 for 循环,它在其中迭代直到满足某个条件。 (duh.. 大声笑对不起)。

所以我设置 row_i = nonzeros++ 但事情是这样的,当我打印出每次迭代时,我得到了

  • 0 和 1,
  • 1 和 2,
  • 2 和 3

。我希望输出是:

  • 1 和 1,
  • 2 和 2,
  • 3 和 3。

为什么不是这样?

【问题讨论】:

标签: java


【解决方案1】:

你需要++nonzeros 而不是nonzeros++ 才能得到你所期望的。

【讨论】:

  • @HovercraftFullOfEels ... 很确定他是 ..... 有什么问题?
  • 是时候多喝点咖啡了。这就是问题所在。对不起。
  • @HovercraftFullOfEels 回到 java 教程 .... ;-) docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
  • @rolfl:我的眼睛看不清楚。 1+ 到 bruno 和 sanbhat。
  • 我在咖啡上+1 ;-)
【解决方案2】:

这就是所谓的后增量;

当你说row_i = nonzeros ++;

首先row_i 将被分配nonzeros 的值,nonzero 将被递增。

尝试预增量

row_i = ++nonzeros; 

【讨论】:

    【解决方案3】:

    如果预增量不是您想要的。检查nonzeros 的初始化并将其更改为 '1' 以使其显示为您想要的。您的代码运行正常。

    【讨论】: