java - 如何获取变量类型?

标签 java android

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

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

最佳答案

正如其他一些人评论的那样,您可以在开始转换输入字段的内容之前使用正则表达式来检查它们。这是一个很好的建议,您应该在使用前清除所有用户输入。

如果您不这样做,或者不能:如果输入无法转换,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 属性将输入限制为仅数字(并获取数字键盘)。

关于java - 如何获取变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849347/

相关文章:

java - 如何避免 'the local variable may not have been initialized' ?

android - 在设置中打开背景限制

android - 在 android 的不同 xml 文件中使用相同的 id 名称

java - 尝试调用虚拟方法 'android.text.Editable android.widget.EditText.getText()'

java - JBOSS 应用服务器和 Servlet

java - MySQLIntegrityConstraintViolationException : Cannot add or update a child row: a foreign key constraint fails

java - 如何使用netty从服务器向客户端发送确认?

Java 策略泛型作为在构造函数中传递策略的替代方案

java - 如何以编程方式更改 ActionBar 中的单个操作项文本颜色?

java - 字母顺序不适用于自定义 ListView