如何使'double'对应'整数'

时间:2013-08-30 00:35:05

标签: java android string integer double

我最近在我的应用程序中添加了一个方法,它将自动格式化textview,让我们说:“50000”到“50,000”,这绝对是完美的。现在我遇到的问题是,在我的应用程序中有多个按钮功能,从该文本视图中添加或删除一定数量,所以我们只需说textview =“5,000”,当你点击按钮时它会删除“1000” 问题是它强制关闭app,因为textview在技术上不再是一个整数,它是一个字符串。这是代码和错误。

    //formats the textview to show commas
    double number = Double.parseDouble(textView1.getText().toString());
    DecimalFormat formatter = new DecimalFormat("###,###,###");
    textView1.setText(formatter.format(number));


    Button btnremove1000 = (Button) findViewById(R.id.btnremove1000);
    btnremove1000.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView textView1 = (TextView) findViewById(R.id.textView1);

            int amount = Integer.parseInteger(textView1.getText()
                    .toString()) - 1000;
            textView1.setText(String.valueOf(amount));

            Toast msg = Toast.makeText(MainScreen.this,
                    "1,000 removed!", Toast.LENGTH_SHORT);
            msg.show();
        }
    });


java.lang.NumberFormatException: Invalid int: "5,000"

现在我怎么能这样做,所以我仍然可以显示逗号但是添加和删除值?

我唯一能想到的是以某种方式删除逗号,添加/删除一个值,然后重新格式化它以再次显示逗号?

4 个答案:

答案 0 :(得分:2)

替换它:

int amount = Integer.parseInteger(textView1.getText().toString()) - 1000;

使用:

String fromTV = textView1.getText().toString();

String commaRemoved = fromTV.replace(",", "");

int amount = Integer.parseInteger(commaRemoved) - 1000;

在一行中:

int amount = Integer.parseInteger(
                    textView1.getText().toString().replace(",", "")) - 1000;

修改:根据Eng.Fouad的建议,使用replace()代替replaceAll()

答案 1 :(得分:1)

使用DecimalFormat.parse()方法,首先使用您用于格式化字符串的DecimalFormatter

答案 2 :(得分:0)

作为一般规则,您不应将数据存储在视图中。

尽量保持分开。

int amount = 5000000;

textView.setText(formatter.format(amount));

button.setOnClickListener(new OnclickListener(){
    public void onClick(View view){
        amount -= 1000;
        textView.setText(formatter.format(amount));
    }
});

此处数据存储在视图之外,易于管理。数据只能朝着一个方向进入视图。

答案 3 :(得分:0)

使用以下代码替换int amount = Integer.parseInteger(textView1.getText().toString()) - 1000;此行: -

String strText = textView1.getText().reaplace(",",""); int amount = Integer.parseInteger(strText) - 1000

还有一件事你不需要指定###,###,###这样的格式。如果使用##,###就足够了。