因为我正在尝试创建一个计算器。为什么有必要在firstnum和secondnum之后添加双空引号。它是转换器还是其他任何东西。因为我看到的只是两个引号之间的空洞。
eqaul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(ADDITION || SUBTRACTION || MULTIPLICATION || DIVIDE)
secondnum = Float.parseFloat(editText.getText() + "" );
if(ADDITION){
editText.setText(firstnum + secondnum + "");
ADDITION = false;
}
firstnum和secondnum都是Float类似的,所以添加它们会导致Float,setText()方法采用String而不是Float,当添加+“”时java会自动将2 Floats的添加转换为字符串,想想你是否有:
editText.setText(5 + " apples");
然后java会认为你想要一个字符串“5 apples”,这就是为什么它将字符串之前的int转换为字符串表示然后将其附加到“apples”。
这是为了强制将整数值(firstnum + secondnum
的结果)转换为字符串,这是setText()
作为参数所需要的。还有setText()
接受int
(你正在使用浮动,所以事实并非如此)但是这个int将被用作字符串资源的ID而不是你想要的,因此需要转换为字符串。它也只是减少输入。它基本上相当于替换:
editText.setText(firstnum + secondnum + "");
有:
editText.setText(String.valueOf(firstnum + secondnum));
+是一个重载运算符,当它在两个数字之间时会添加它们,但添加“”将使它成为一个字符串
setText想要一个String。如果你想从一个int获得一个String,你可以使用String.valueOf(i)
或i+""
。