如何获得变量类型?

时间:2013-04-06 09:46:29

标签: java android

在我的应用程序中,我有两个文本域和一个提交。此应用程序计算此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");

但我的应用仍然没有在其他情况下显示我的消息。

4 个答案:

答案 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();
            }

        }

    });

}
}