我想在特定位置更改数组中的简单值,但即使数组中的值不为0,尝试更改该值时,也会变为0。 这发生在一个简单的循环中:
select your_table.fault,your_table.name,t5.restoreid
from (
SELECT
T3.fault, t4.name,t2.item_id
FROM table2 T2
INNER JOIN (
SELECT a.*
FROM table1 a
LEFT JOIN table1 b ON a.item_id = b.item_id AND a.submit_id < b.submit_id
WHERE b.submit_id IS NULL
) T1 ON T1.item_id = T2.item_id
INNER JOIN table3 T3 ON T1.id = T3.run_id
LEFT JOIN table4 T4
ON 3.runname_id = T4.id
) as your_table left join table5 t5 on your_table.item_id = t5.item_id
我使用VS17调试器试图了解它究竟发生了什么,但我仍然不知道为什么会这样。在我的应用程序中,我已经将其他变量设置为数组中的元素,但这是我第一次看到类似的东西。
根据调试器,private final EditText milkdone;
private final EditText brixdone;
private double milkdone2;
private double brixdone2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
milkdone = (EditText) findViewById(R.id.milkliter);
brixdone = (EditText) findViewById(R.id.brix);
milkdone.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_DONE) {
milkdone2 = Double.parseDouble(milkdone.getText().toString());
brixdone2 = Double.parseDouble(brixdone.getText().toString());
,即使for (int i = 0; i < 4; i++)
{
int stat = child[i]; // stat becomes 0 even if child[i] is != 0
// some calculation on stat here
}
:
这在整个循环中都会发生。我确信这是我缺少的东西,但我真的无法得到它是什么。
答案 0 :(得分:6)
虽然调试器在这样的行上停止了,但它还没有执行那行代码。由于尚未执行该行,因此stat
未分配child[i]
的值,调试器仅显示整数(0)的默认值。它运作得很好。如果要查看值更改,请转到下一个语句。