-1

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

    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;
    }

}

现在,当运行不良时,应用程序计算得不好,数字很混乱

4

2 回答 2

1

不确定您遇到了什么错误。你有没有试过这个:

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

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

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

我会改用这个:

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

更好的实现还可以解释 getText() 返回 null 或空字符串。

于 2013-07-06T19:09:41.117 回答
0

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

于 2013-07-06T19:14:42.417 回答