2011-02-23 92 views
0

我已经创建了用户位的数字到editexts和应用程序正在采取一些Calcs(计算)的应用程序,并显示一个具有number..i 7行与editexts。但第7 editext是用户填充它是可选的(我添加了一个复选框,如果用户选择它的editext是可见的,否则它的隐形..)我有我的代码奇怪的问题,我想你的帮助。 。力向下错误(如果使用/如果其他人)

首先这是我的代码:

apostoli.setOnClickListener(new OnClickListener() { 

       private AlertDialog show; 

       public void onClick(View arg0) { 

       if ((vprosvasis.getText().toString() == " ") 
         || (vprosvasis.getText().length() == 0) 
         || (vprosvasis2.getText().toString() == " ") 
         || (vprosvasis2.getText().length() == 0) 
         || (vprosvasis3.getText().toString() == " ") 
         || (vprosvasis3.getText().length() == 0) 
         || (vprosvasis4.getText().toString() == " ") 
         || (vprosvasis4.getText().length() == 0) 
         || (vprosvasis5.getText().toString() == " ") 
         || (vprosvasis5.getText().length() == 0) 
         || (vprosvasis6.getText().toString() == " ") 
         || (vprosvasis6.getText().length() == 0) 


       ) { 

           show = new AlertDialog.Builder(mContext).setTitle("Error") 
               .setMessage("Symplirwste olous tous vathmous prosvasis") 
               .setPositiveButton("OK", null).show(); 

         } 


        else if (((vprosvasis7.getText().toString() != " ") 
          || (vprosvasis7.getText().length() != 0))) 
       { 


          float genikosvathmos = (float) ((new Float(vprosvasis.getText().toString()) 
          + new Float(vprosvasis7.getText().toString()) 
          + new Float(vprosvasis2.getText().toString()) 
          + new Float(vprosvasis3.getText().toString()) 
          + new Float(vprosvasis4.getText().toString()) 
          + new Float(vprosvasis5.getText().toString()) + new Float(
          vprosvasis6.getText().toString()))/7); 

        float vprosvasisFloat = Float.parseFloat(vprosvasis.getText().toString()); 
        float vprosvasisFloat2 = Float.parseFloat(vprosvasis2.getText().toString()); 
        float vprosvasisFloat7 = Float.parseFloat(vprosvasis7.getText().toString()); 
        float vprosvasisFloat5 = Float.parseFloat(vprosvasis5.getText().toString()); 

        moria = (float) (((new Float((genikosvathmos * 8)+ (vprosvasisFloat * 1.3)+ (vprosvasisFloat2 * 0.7)) * 100))); 
        moria2 = (float) (((new Float((genikosvathmos * 8)+ (vprosvasisFloat7 * 1.3)+ (vprosvasisFloat5 * 0.7)) * 100))); 

        // Toast.makeText(thetiki.this, "Genikos vathmos"+moria , 
        // Toast.LENGTH_SHORT).show(); 

        // 1o pedio 
        show = new AlertDialog.Builder(mContext).setTitle("moria") 
        .setMessage(   "1o pedio: " + moria + "\n2o pedio: " 
              + moria + "\n3o pedio: " + moria 
              + "\n4o pedio: " + moria 
              + "\n5o pedio: "+moria2) 
          .setPositiveButton("OK", null).show(); 

       } 




        else if ((vprosvasis.getText().toString()!= " ") 
         || (vprosvasis.getText().length() != 0) 
         || (vprosvasis2.getText().toString() != " ") 
         || (vprosvasis2.getText().length() != 0) 
         || (vprosvasis3.getText().toString() != " ") 
         || (vprosvasis3.getText().length() != 0) 
         || (vprosvasis4.getText().toString() != " ") 
         || (vprosvasis4.getText().length() != 0) 
         || (vprosvasis5.getText().toString() != " ") 
         || (vprosvasis5.getText().length() != 0) 
         || (vprosvasis6.getText().toString() != " ") 
         || (vprosvasis6.getText().length() != 0) 
         &&((vprosvasis7.getText().toString()== " ") 
         || (vprosvasis7.getText().length() == 0)) 


       ) 

       { 

        float genikosvathmos = (float) ((new Float(vprosvasis 
          .getText().toString()) 
          + new Float(vprosvasis2.getText().toString()) 
          + new Float(vprosvasis3.getText().toString()) 
          + new Float(vprosvasis4.getText().toString()) 
          + new Float(vprosvasis5.getText().toString()) + new Float(
          vprosvasis6.getText().toString()))/6); 


           float vprosvasisFloat = Float.parseFloat(vprosvasis.getText().toString()); 
           float vprosvasisFloat2 = Float.parseFloat(vprosvasis2.getText().toString()); 


           moria=(float) (((new Float ((genikosvathmos*8)+(vprosvasisFloat * 1.3)+(vprosvasisFloat2 * 0.7))*100)));  

           // Toast.makeText(thetiki.this, "Genikos vathmos"+moria , Toast.LENGTH_SHORT).show(); 

          show = new AlertDialog.Builder(mContext).setTitle("moria") 
          .setMessage("1o pedio: "+moria+"\n2o pedio: "+moria+"\n3o pedio: "+moria+"\n4o pedio: "+moria+"\n5o pedio: -") 
          .setPositiveButton("OK", null).show(); 

         } 

       } 

     }); 

vprosvasis,vprosvasis2 ..等是使用了3如果/ else.the首先检查进入editText.i数如果6第一封ditext是空的,如果没有,则有警报。第二个想要检查vprosvasis7是否为空,然后进行计算。最后,第三个要检查是否使用vprosvasis7,然后进行新的计算。 。这是不工作..具体来说,第一个如果工作,第二个工程两个,但如果我没有填写第七editext,第三如果堆叠并强制我的应用程序..

你的帮助将是非常非常乐于助人..

编辑

logcat的时候第7 editext是空的,我按下BTN '阿波斯托利'

02-23 23:51:27.234: ERROR/AndroidRuntime(5739): FATAL EXCEPTION: main 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739): java.lang.NumberFormatException: 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at java.lang.Float.parseFloat(Float.java:291) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at java.lang.Float.<init>(Float.java:111) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at kostas.menu.moria.thetiki$8.onClick(thetiki.java:396) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.view.View.performClick(View.java:2461) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.view.View$PerformClick.run(View.java:8888) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.os.Handler.handleCallback(Handler.java:587) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.os.Looper.loop(Looper.java:123) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
02-23 23:51:27.234: ERROR/AndroidRuntime(5739):  at dalvik.system.NativeStart.main(Native Method) 
02-23 23:51:27.249: WARN/ActivityManager(2944): Force finishing activity kostas.menu.moria/.thetiki 
02-23 23:51:27.300: INFO/(2944): dumpmesg > "/data/log/dumpstate_app_error.log" 
+0

嗯..什么是你的错误?附上你的堆栈跟踪。 – 2011-02-23 21:44:03

+0

这个问题是编辑的,包括我的logCat – 2011-02-23 21:54:02

+0

thetiki.java:396是第一行中的行如果:+ new Float(vprosvasis7.getText()。toString()) – 2011-02-23 22:19:23

回答

0
float vprosvasisFloat7 = Float.parseFloat(vprosvasis7.getText().toString()); 

所以,当EditText上是空的,你基本上调用Float.parseFloat( “”);空字符串不是有效的float,所以Float类抛出异常。

解析前检查空字符串。

if (vprosvasis7.getText().toString.equals("")) { 
    float vprosvasisFloat7 = Float.parseFloat(vprosvasis7.getText().toString()); 
} 
+0

float vprosvasisFloat7 = Float.parseFloat(vprosvasis7.getText )的ToString()); 。这是调用时,vprosvasis7不是空的..请你在你的答案更具体,我认为这是错误的... – 2011-02-23 22:34:07

+0

我不知道它在哪里,由于没有行号,但堆栈trace在thetiki.java行396上显示一个错误。无论是传递给Float.parseFloat的行号都会导致错误。 – danh32 2011-02-24 05:22:29

+0

thetiki.java:396是第一行中的行如果:+ new Float(vprosvasis7.getText()。toString()) – 2011-02-24 11:37:53