在我的应用程序中,我有两个文本域和一个提交。此应用程序计算此textfiels中的整数值。但如果我把文字放在那里 - 有错误。如何检查此文本字段的int以及如何显示消息,如果没有整数。我的尝试:
EditText num1text=(EditText)findViewById(R.id.num1text);
EditText num2text=(EditText)findViewById(R.id.num2text);
Float num1=Float.parseFloat(num1text.getText().toString());
Float num2=Float.parseFloat(num2text.getText().toString());
if (num1 instanceof Float && num2 instanceof Float)
{
Float answ = (num1 * num2) / 100;
TextView answer=(TextView)findViewById(R.id.ans);
answer.setText(answ);
}else
answer.setText("Message");
但我的应用仍然没有在其他情况下显示我的消息。
答案 0 :(得分:4)
正如其他人评论的那样,您可以在开始转换之前使用正则表达式检查输入字段的内容。这是一个很好的建议,您应该在使用前擦除任何用户输入。
如果您没有,或者不能:Float.parseFloat()
操作如果无法转换输入则抛出NumberFormatException
。您需要使用try...catch
构造来避免这种情况。
try {
Float num1=Float.parseFloat(num1text.getText().toString());
Float num2=Float.parseFloat(num2text.getText().toString());
Float answ = (num1 * num2) / 100;
TextView answer=(TextView)findViewById(R.id.ans);
answer.setText(answ);
} catch (NumberFormatException e) {
TextView answer=(TextView)findViewById(R.id.ans);
answer.setText("Message");
}
此外,您可以使用布局XML中的android:inputType
属性将输入限制为仅限数字(并获取数字键盘)。
答案 1 :(得分:1)
您必须使用正则表达式:
if (YourVariable.matches("^[0-9,;]+$")) {
// Contains only numbers
} else {
// Contains NOT only numbers
}
答案 2 :(得分:0)
如果输入已修复,您必须始终需要整数/实数(数字)值,则可以将inputtype
设置为EditText
作为属性的<EditText android:inputType="number"
.../>
。
这样软键盘只会在屏幕上显示数字键,因此您可以随时获取数字,无需检查用户是否输入字符或数字值
例如像这样
{{1}}
答案 3 :(得分:0)
Float.parseFloat(num2text.getText()的toString());如果不是float抛出数字格式异常。抓住例外。清除字段。显示输入无效的Toast消息。
public class MainActivity extends Activity {
TextView answer;
EditText num1text,num2text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1text=(EditText)findViewById(R.id.editText1);
num2text=(EditText)findViewById(R.id.editText2);
Button b= (Button) findViewById(R.id.button1);
answer = (TextView) findViewById(R.id.textView2);
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try
{
Float num2=Float.parseFloat(num2text.getText().toString());
Float num1=Float.parseFloat(num1text.getText().toString());
//if the numbers are not float throws a numberformat exception
if (num1 instanceof Float && num2 instanceof Float)
{
Float answ = (num1 * num2) / 100;
answer.setText(Float.toString(answ));
}else
answer.setText("Message");
}
catch(NumberFormatException e)
{
//catch the exception clear the fields and display toast
num1text.setText("");
num2text.setText("");
Toast.makeText(MainActivity.this, "Invalid Input Type!Check the input", 1000).show();
e.printStackTrace();
}
}
});
}
}