我的基本添加程序存在问题一切正常,例如键入值并测试是否没有错,但是当我打开程序并将TextView留空并按下按钮检查时会出现问题,程序终止。
我试过转换String =“”;到一个整数,但我的程序没有启动。
我相信它只比较整数而不是字符串,但我不确定如何克服它
任何帮助将不胜感激。
int one=1, two=2;
ans = one + two;
TextView = Value;
TextView = i;
Button one,check;
i = (TextView) findViewById(R.id.display);
Value = (TextView) findViewById(R.id.answer);
one= (Button) findViewById(R.id.one);
one.setOnClickListener(this);
check= (Button) findViewById(R.id.check);
check.setOnClickListener(this);
public void onClick(View v) {
switch(v.getId()){
case R.id.one:
ans.append("1");
break;
case R.id.check:
if (answer ==(Integer.parseInt(Value.getText().toString())))
{
display.setText(one+"+"+two);
ans.setText("");
}
else
{
i.setText("Invalid");
}
break;
}
}
答案 0 :(得分:0)
您需要验证输入。您必须确保用户在文本框中输入的内容是有效的而不是垃圾。如果用户输入垃圾,则使用try catch
轻轻处理异常,并通过Toast消息告知用户输入无效。
希望您了解编程的这个简单方面。
答案 1 :(得分:0)
你的问题在这里:
Integer.parseInt(Value.getText().toString())
来自文档:
抛出:“NumberFormatException - 如果字符串不包含 可解析的整数。“
所以你应该把这一行包装在try / catch中(捕获NumberFormatException),并告诉用户如果抛出异常,他们的输入是无效的。进一步将编辑文本的输入类型设置为“数字”。
答案 2 :(得分:0)
您的代码存在很多问题: 定义int tempVal = 0;
1) TextView = Value; is not correct I guess. TextView and EditText are two different things.
2) Value = (TextView) findViewById(R.id.answer);
I thik it should be
EditText txtVal= (EditText) findViewById(R.id.answer);
3)
String txtValStr= txtVal.getText();
4) if (txtValStr != null || !"".equals(txtValStr))
{
tempVal = new Integer(txtValStr).intValue();
}
inside case:
if(tempVal == answer)
{
....
}
答案 3 :(得分:0)
使用if语句
String s = Value.getText().toString();
if (s != null && !s.matches("")){
// Do your code
} else {
// use a toast to prompt them to enter something
}
检查字符串是否为空或空,如果不是,则可以解析它。