2012-07-28 68 views
0

我有一个3 EditTexts和Button的活动。用户可以填写两个编辑文本(edittext 1和2或1和3)。总是一个编辑文本(第二或第三)必须是空的。点击按钮后显示正确的结果。我不知道如何更改我的代码。如果我有空的edittext,应用程序已经意外停止。如果我插入值0,不使用edittext,则一切正常。有没有人有任何想法?如何解决这个问题呢?非常感谢您的帮助。 这是我的主要活动代码:当第3个为空时从2个edittext中获取文本

public class Glowna extends Activity implements OnClickListener{ 


@Override 
public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
View button1Button = this.findViewById(R.id.oblicz); 
button1Button.setOnClickListener(this);    
} 
public void onClick(View v){ 
EditText numa = (EditText)findViewById(R.id.a); 
EditText numb = (EditText)findViewById(R.id.b); 
EditText numc = (EditText)findViewById(R.id.c); 
float eq1 = 0; 
float eq2 = 0; 
float eq3 = 0; 
float eq4 = 0; 
float num1 = Float.parseFloat(numa.getText().toString()); 
float num2 = Float.parseFloat(numb.getText().toString()); 
float num3 = Float.parseFloat(numc.getText().toString()); 


if (num1>0 & num2>0){ 
try{ 
switch (v.getId()) { 
    case R.id.oblicz: 
    eq1 = 4*num1; 
    eq2 = num1*num2; 
    break; } 
String wynik1 = Float.toString(eq1); 
String wynik2 = Float.toString(eq2); 
Intent i = new Intent(this, Wynik.class); 
i.putExtra("a",wynik1); 
i.putExtra("b",wynik2); 
startActivity(i); } 

catch (NumberFormatException e) {Intent o = new Intent(this, Komunikat.class); 
startActivity(o); return; }} 


else if (num1>0&num3>0){ 
try{ 
switch (v.getId()) { 
case R.id.oblicz: 
eq4 = 4*num1; 
eq3 = (num3/2)*num3; 
break; } 
String wynik4 = Float.toString(eq4); 
String wynik3 = Float.toString(eq3); 
Intent j = new Intent(this, Wynik1.class); 
j.putExtra("d",wynik4); 
j.putExtra("c",wynik3); 
startActivity(j); } 
catch (NumberFormatException e) {Intent o = new Intent(this, Komunikat.class); 
startActivity(o); 
return;}}  

else {Intent o = new Intent(this, Komunikat.class); 
startActivity(o);} 

}} 

和错误:

E/AndroidRuntime(249): Uncaught handler: thread main exiting due to uncaught exception 

E/AndroidRuntime(249): java.lang.NumberFormatException: 

E/AndroidRuntime(249):  at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:296) 

E/AndroidRuntime(249):  at java.lang.Float.parseFloat(Float.java:327) 

E/AndroidRuntime(249):  at arek.gemetrytesty.glowna.Glowna.onClick(Glowna.java:38) 

E/AndroidRuntime(249):  at android.view.View.performClick(View.java:2344) 

E/AndroidRuntime(249):  at android.view.View.onTouchEvent(View.java:4133) 

E/AndroidRuntime(249):  at android.widget.TextView.onTouchEvent(TextView.java:6510) 

E/AndroidRuntime(249):  at android.view.View.dispatchTouchEvent(View.java:3672) 

E/AndroidRuntime(249):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 

E/AndroidRuntime(249):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 

E/AndroidRuntime(249):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 

E/AndroidRuntime(249):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 

E/AndroidRuntime(249):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) 

E/AndroidRuntime(249):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) 

E/AndroidRuntime(249):  at android.app.Activity.dispatchTouchEvent(Activity.java:1987) 

E/AndroidRuntime(249):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) 

E/AndroidRuntime(249):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 

E/AndroidRuntime(249):  at android.os.Handler.dispatchMessage(Handler.java:99) 

E/AndroidRuntime(249):  at android.os.Looper.loop(Looper.java:123) 

E/AndroidRuntime(249):  at android.app.ActivityThread.main(ActivityThread.java:4203) 

E/AndroidRuntime(249):  at java.lang.reflect.Method.invokeNative(Native Method) 

E/AndroidRuntime(249):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(249):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 

E/AndroidRuntime(249):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 

E/AndroidRuntime(249):  at dalvik.system.NativeStart.main(Native Method) 
+0

用这种代码形式认识某件事情是一件痛苦的事情。如果应用程序部队关闭,你应该发布错误logcat。 – Egor 2012-07-28 06:57:50

+0

我想你应该检查numa,numb和numc中是否有任何东西。然后尝试Float.parseFloat仅包含那些包含值的2。并用某些东西初始化num1 num 2 num3,可能为0. – AtanuCSE 2012-07-28 07:05:15

+0

@ user978758由于您没有在EditText(即num2/num3)之一中插入值,因此您正在获取NumberFormatException()。所以尝试用不同的逻辑来实现你的代码。 :) – Akshay 2012-07-28 07:28:34

回答

0

为了赶上java.lang.NumberFormatException,试试这个:

float num1 = Float.parseFloat(numa.getText().toString()); 
     float num2; 
     float num3; 
     try { 
      num2 = Float.parseFloat(numb.getText().toString()); 
     } catch (Exception e) { 
      num2 = 0; 
     } 
     try { 
      num3 = Float.parseFloat(numc.getText().toString()); 
     } catch (Exception e) { 
      num3 = 0; 
     } 

而是这个片段的:

float num1 = Float.parseFloat(numa.getText().toString()); 
float num2 = Float.parseFloat(numb.getText().toString()); 
float num3 = Float.parseFloat(numc.getText().toString()); 
+0

@ user978758请参阅我的编辑。 – hasanghaforian 2012-07-28 07:26:14

+0

非常感谢。它工作完美。 – user978758 2012-07-28 07:42:44

+0

@ user978758如果有效,请添加复选标记。 – hasanghaforian 2012-07-28 07:46:28

相关问题