badd.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String s1 = e1.getText()+"hi".toString();
Log.i("add",s1);
if(e1.getText()==null)
{
Toast.makeText(getApplicationContext(), "Please Enter A Number First", Toast.LENGTH_SHORT).show();
}
else
{
num1 = Float.parseFloat(e1.getText()+"");
i=1;
e1.setText(null);
}
}
});
我正在制作一个简单的计算器应用程序,有一个Button badd(执行添加的按钮)和一个EditText e1。单击此按钮时;首先,如果文本框为空,则检查它是否为空它是否显示Toast告诉用户输入数字。如果已输入该号码,则该号码将存储在变量num1中,并且文本框将变为空,以便用户可以输入另一个号码,并且将对这两个号码执行添加。
当我输入一个数字并按下badd添加成功完成。但我的问题是,当我将编辑文本框留空(空)时,我得到一个运行时错误,而不是显示吐司,它显示错误"您的应用程序很遗憾地关闭"。
我创建了一个字符串变量s1,它接受在e1中输入的字符串,并将该字符串与另一个字符串连接起来" hi"这样如果字符串为空,它至少会在log cat中显示hi消息。它是检查匿名内部类中是否存在某些错误。但是已经清除了匿名内部类和其他阻塞没有问题。
我认为bug存在于if块中。请帮我!以下是我的LogCat错误,可以帮助您找到错误。
03-05 16:37:00.601: I/add(1569): hi
03-05 16:37:00.663: E/AndroidRuntime(1569): FATAL EXCEPTION: main
03-05 16:37:00.663: E/AndroidRuntime(1569): java.lang.NumberFormatException: Invalid float: ""
03-05 16:37:00.663: E/AndroidRuntime(1569): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
03-05 16:37:00.663: E/AndroidRuntime(1569): at java.lang.StringToReal.parseFloat(StringToReal.java:289)
03-05 16:37:00.663: E/AndroidRuntime(1569): at java.lang.Float.parseFloat(Float.java:300)
03-05 16:37:00.663: E/AndroidRuntime(1569): at com.example.mycalculator.MainActivity$13.onClick(MainActivity.java:171)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.view.View.performClick(View.java:4202)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.view.View$PerformClick.run(View.java:17340)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.os.Handler.handleCallback(Handler.java:725)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.os.Handler.dispatchMessage(Handler.java:92)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.os.Looper.loop(Looper.java:137)
03-05 16:37:00.663: E/AndroidRuntime(1569): at android.app.ActivityThread.main(ActivityThread.java:5039)
03-05 16:37:00.663: E/AndroidRuntime(1569): at java.lang.reflect.Method.invokeNative(Native Method)
03-05 16:37:00.663: E/AndroidRuntime(1569): at java.lang.reflect.Method.invoke(Method.java:511)
03-05 16:37:00.663: E/AndroidRuntime(1569): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-05 16:37:00.663: E/AndroidRuntime(1569): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-05 16:37:00.663: E/AndroidRuntime(1569): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
根据javadoc for parseFloat,如果字符串不能被解释为浮点数,则它会抛出NumberFormatException。因此,您应该通过捕获该异常并执行其他操作来处理该情况:
#include <stdio.h>
int main()
{
printf("Printing quotation mark \")\" ");
}
答案 1 :(得分:0)
尝试使用if块:
if(e1.getText().toString().equals(""))
希望这会对你有所帮助.. :)