【发布时间】:2016-02-20 06:32:04
【问题描述】:
int i = 3;
int j = 2;
int k = 1;
Printer printer = new Printer();
if (printer.getTotalAmount() > 0) {
if (printer.getType().equals("canon")) {
if (i >= j) {
i = i-j; // i=3-2, so i will be 1 now
}
}
if (printer.getType().equals("epson")) {
if (i >= k) {
i = i - k; // it should be i = 1-1 and i will be 0 now
}
}
}
我的问题是变量i 的值在前面的if 语句之后没有更新。由于块作用域,变量i的值仍然是3。
我该如何解决这个问题?
【问题讨论】:
-
您的问题不清楚。如果
if条件不匹配,则控制不会进入 if 块。所以它不会做i=i-j操作。 if-else 不是循环。它是一个条件块 -
if 条件内部可能有问题?请张贴。
-
您的代码很好,范围也可以——变量属于声明它的范围,因此在
if内更新它是可以的并且应该是可见的。问题出在其他地方。发布不起作用的整个片段。 -
这里最重要的是您正在评估的条件。因此,如果您可以分享不起作用的实际代码,帮助您会更容易。
-
我编辑了我的问题。请看一下
标签: java if-statement scope