我的代码中有两个if
语句,但当两者都是true
时,它只会生成第二个if
。我该怎么写呢?
String s1 = editTextl.getText().toString();
double d = 0;
if (s1.contains("H")) {
d = + H; //H is double with value of 1
}
if (s1.contains("O")) {
d = + O; //O is double with value of 16
}
TextView.setText(" " + getString(R.string.vysledek) + " " + d);
当我在EditText中输入HO时,TextView应返回值17,但它只返回16.为什么?
答案 0 :(得分:8)
您需要按如下方式编写,将= +
替换为+=
:
if (s1.contains("H")) {
d += H;
}
if (s1.contains("O")) {
d += O;
}
+=
是所谓的复合赋值运算符。它将右操作数添加到左操作数。
反之, =+
,只是将右操作数分配给左操作数,相当于使用 =
的简单赋值。一元 +
运算符将被忽略。
答案 1 :(得分:4)
将= +
替换为+=
。
=
是一个赋值运算符,+
是一个基本无效的一元加运算符。所以你要为变量分配一个新值。
+=
是“添加到左侧的当前值”。
答案 2 :(得分:1)
double d = 0;
if (s1.contains("H")) {
d += 1; // H is double with value of 1
}
if (s1.contains("O")) {
d += 16; // O is double with value of 16
}
答案 3 :(得分:0)
将= +
分配更改为+=
分配 - d = + H
实际上只是由编译器解释为d = +H
。您实际上并未将H
添加到d
,而是仅设置d = H
。
答案 4 :(得分:0)
将d = + H
替换为d += H
,将d = + O
替换为d += O