我试图从EditText中获取文本的值作为整数,但是我发现每次插入任何值时它都会从catch中计算出初始值,那么解决了什么问题呢?问题
结果变为= 0
public Button bu,bu2,bu3,bu4,bu5;
int num=0,num2=0,num3=0,result=0;
public EditText on,on2,on3,on4;
public TextView tex ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_monthlycalc);
bu=(Button)findViewById(R.id.year);
bu.setOnClickListener(this);
bu2=(Button)findViewById(R.id.calc);
bu2.setOnClickListener(this);
bu3=(Button)findViewById(R.id.reset);
bu3.setOnClickListener(this);
bu4=(Button)findViewById(R.id.H1);
bu4.setOnClickListener(this);
bu5=(Button)findViewById(R.id.ron);
bu5.setOnClickListener(this);
try {
on=(EditText)findViewById(R.id.loanAm);
num=Integer.valueOf(on.getText().toString().trim());
} catch (NumberFormatException e) {
num=0;
}
try {
on2=(EditText)findViewById(R.id.intRate);
num2=Integer.valueOf(on2.getText().toString().trim());
} catch (NumberFormatException e) {
num2=0;
}
try {
on3=(EditText)findViewById(R.id.lonTerm);
num=Integer.valueOf(on3.getText().toString().trim());
} catch (NumberFormatException e) {
num3=0;
}
tex = (TextView) findViewById(R.id.monPay);
result=num+num2+num3;
@Override
public void onClick(View v)
{
if (v.getId()==R.id.calc)
tex.setText(String.valueOf(result));
}
答案 0 :(得分:0)
因为你的String中可能有Chars或Whitespaces,而不是数字。
使用正则表达式解析它。
final Pattern pattern = Pattern.compile("\\d+"); // the regex
final ArrayList<Integer> ints = new ArrayList<Integer>(); // results
while (matcher.find()) { // for each match
ints.add(Integer.parseInt(matcher.group())); // convert to int
}
如果你真的想删除所有空格,请不要使用trim。使用
st.replaceAll("\\s+","")
删除所有标签
并且确保在单击按钮时抓住您的值,而不是之前,因为在初始化时它没有任何值,如果你没有定义defaultValue。
答案 1 :(得分:0)
将代码移至onClick
您正试图获取onCreate
内的值,这些值在启动活动时发生且所有EditText
都为空,将其放在onClick
内并且它将起作用:)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_monthlycalc);
bu=(Button)findViewById(R.id.year);
bu.setOnClickListener(this);
bu2=(Button)findViewById(R.id.calc);
bu2.setOnClickListener(this);
bu3=(Button)findViewById(R.id.reset);
bu3.setOnClickListener(this);
bu4=(Button)findViewById(R.id.H1);
bu4.setOnClickListener(this);
bu5=(Button)findViewById(R.id.ron);
on=(EditText)findViewById(R.id.loanAm);
on2=(EditText)findViewById(R.id.intRate);
on3=(EditText)findViewById(R.id.lonTerm);
tex = (TextView) findViewById(R.id.monPay);
}
@Override
public void onClick(View v)
{
try {
num=Integer.valueOf(on.getText().toString().trim());
} catch (NumberFormatException e) {
num=0;
}
try {
num2=Integer.valueOf(on2.getText().toString().trim());
} catch (NumberFormatException e) {
num2=0;
}
try {
num=Integer.valueOf(on3.getText().toString().trim());
} catch (NumberFormatException e) {
num3=0;
}
result=num+num2+num3;
if (v.getId()==R.id.calc)
tex.setText(String.valueOf(result));
}