1

我的代码看起来很简单,我不知道是什么问题。如果我编写这样的代码:

tvResult.setText(sum+ "RUB");

它显示正确的数字。但是,如果我尝试添加这样的 IF 语句:

if(sum>=114000) {
                    tvResult.setText(sum + " RUB");
                }

和等于,比如说,1000000,它显示奇怪的数字:1111111.0。需要您的建议 =) 提前致谢

这是 XML 代码:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:id="@+id/tvCash"
        android:layout_below="@id/tvCalculate"
        android:hint="@string/cash_money"
        android:background="@drawable/zakat_red"
        android:layout_marginTop="20dp"/>

    <EditText
        android:layout_width="130dp"
        android:layout_height="40dp"
        android:id="@+id/etCash"
       android:inputType="numberDecimal"
        android:layout_above="@+id/tvBank"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:hint="@string/hint_zakat"
        android:gravity="end"
        android:imeOptions="actionDone"/>

和Java代码:

TextWatcher twCash=new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                tvCash.setBackgroundResource(R.drawable.zakat_green);
                sum+=Float.valueOf(etCash.getText().toString());
                if(sum>=114000) {
                    tvResult.setText(sum + " RUB");
                }
            }
        };
4

2 回答 2

0

你的逻辑有问题。当你使用TextWatcher, 来计算你输入的所有数字的总和editText,即使你输入 '.' 在任何数字之后,afterTextChanged()将被调用,然后它将该数字添加到聚合总和中。假设您连续输入以下字符:2、3、。, 4 , 7 然后你会得到 sum = 94.87 我猜这不是计算输入数字总和的正确方法。您必须更正逻辑以获得所需的输出。

于 2016-03-09T21:44:34.690 回答
0

“.0”很可能会出现,因为 sum 变量是浮点数或其他东西。您应该对变量 sum 使用 int,或者在显示它时将其转换为 int。这应该有效。

if (sum >= 114000) {
    tvResult.setText((int)sum + " RUB");
}

如果您需要它是一个总和并且仅在小数点后显示不为零的值,则需要编写一个方法来解析该值以返回您想要的值。

于 2016-03-09T21:40:38.223 回答