我有拆分文本/数字方法的问题,我想分割文本编辑行的数字,我有这个代码我做错了吗? 这是我的全部代码:
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;
}
}
现在,当运行不良时,应用程序无法计算其混乱的数字
答案 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(" ")
应该有效。