如何拆分android .split()中的数字;

时间:2013-07-06 19:03:46

标签: android split

我有拆分文本/数字方法的问题,我想分割文本编辑行的数字,我有这个代码我做错了吗? 这是我的全部代码:

    package com.trafika.rafa;

import java.util.Scanner;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button calculate = (Button) findViewById(R.id.calculateB);
        final TextView RM = (TextView) findViewById(R.id.returnMoney1);
        final EditText GM = (EditText) findViewById(R.id.gMoney);
        final EditText COP = (EditText) findViewById(R.id.cOP);

        calculate.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    int givedMoney = Integer.parseInt(GM.getText().toString());
                    // String returnMoney = RM.getText().toString();
                    // String CostOfProduct = COP.getText().toString();
                    int CostOfProduct = Integer.parseInt(COP.getText().toString());
                    String parts[] = COP.getText().toString().split(" ");
                    for (int i = 0; i < parts.length; i++) {
                        CostOfProduct += Integer.parseInt(parts[i]);
                    }
                    int returnmoney;
                    returnmoney = givedMoney - CostOfProduct;
                    if (givedMoney < CostOfProduct) {
                        returnmoney = CostOfProduct - givedMoney;
                        RM.setTextColor(Color.RED);
                        RM.setText("Need more " + returnmoney + " den");
                        return;
                    }
                    RM.setTextColor(Color.WHITE);
                    RM.setText(returnmoney + " den");
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

现在,当运行不良时,应用程序无法计算其混乱的数字

2 个答案:

答案 0 :(得分:1)

不确定您遇到的错误是什么。你试过这个:

COP.getText().toString().split("\\s+");

String.split()将正则表达式作为其第一个参数。通过使用此正则表达式,您还可以处理某人有多个空白字符的情况。

另外我不明白为什么用Integer.parseInt初始化CostOfProduct(COP.getText()。toString());然后使用相同TextView的部分添加到它。

我会改用它:

                int CostOfProduct = 0;
                String parts[] = COP.getText().toString().split("\\s+");

更好的实现也会导致getText()返回null或空字符串。

答案 1 :(得分:0)

没有异常声明很难说,但我相信COP.getText()的返回类型不是java.lang.String(如果我错了,请纠正我,我现在无法测试它)。但是,这应该会导致编译错误。如果这是问题,那么COP.getText().toString().split(" ")应该有效。