0

在我的应用程序中,我有两个文本字段和一个提交。此应用程序计算此文本字段中的整数值。但是,如果我把文字放在那里 - 有错误。我如何检查这个文本字段的 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");

但是在其他情况下,我的应用程序仍然不会显示我的消息。

4

4 回答 4

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

此外,您可以使用android:inputType布局 XML 中的属性将输入限制为仅数字(并获得数字键盘)。

于 2013-04-06T09:51:12.877 回答
1

您必须使用正则表达式:

if (YourVariable.matches("^[0-9,;]+$")) {
    // Contains only numbers
} else {
    // Contains NOT only numbers
}
于 2013-04-06T09:51:58.337 回答
0

如果输入是固定的,您必须始终需要整数/实数(数字)值,那么您可以inputtype在 xml 文件EditText中将 as 属性设置为数字。

这将软键盘仅在屏幕上显示数字键,因此您可以始终获取数字,而无需检查用户是否输入字符或数字值的类型

例如像这样

<EditText android:inputType="number"
.../>
于 2013-04-06T09:50:51.953 回答
0

Float.parseFloat(num2text.getText().toString()); 如果不是浮点数,则抛出数字格式异常。捕捉异常。清除字段。显示输入无效的 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();
            }

        }

    });

}
}
于 2013-04-06T10:05:22.150 回答