算术异常

时间:2016-03-12 03:14:27

标签: android arraylist divide-by-zero arithmeticexception

这是我的Java代码。我正面临一个错误"Fatal Exception main"
我希望我的应用程序能够成功运行 请帮我。我是Android新手

if(queList.size() == question_Counter+1) {


        //  answerList = new ArrayList<String>();
            final int count= dbhelper.getCorrectAnswerCount(answerList);
            count1=count;
            Log.d("bachhhaaaa**********", "Test Activity"+count1);


            String TotalMark  = dbhelper.totalMark();
            Log.d("TEST<<<<<<<<<<<<TotalMark", TotalMark);

            String NoOfQuestion =dbhelper.noOfQuestion();
            Log.d("TEST<<<<<<<<<<<<NoOfQuestion", NoOfQuestion);

            int perQuestionValue=0;
            perQuestionValue= Integer.parseInt(TotalMark) /Integer.parseInt(NoOfQuestion);


            int TotalCountMark=0;
            TotalCountMark = count1 * perQuestionValue;

            String answerString = "Answer";
            for(int i=0;i<answerList.size();i++){

                answerString = answerString+","+answerList.get(i);


            }
            String statusStringOfUserAnswer  = dbhelper.getStatusStringOfUserAnswer(answerList);
            dbhelper.saveOrigionalMarkInDatabase(TotalCountMark,answerString,statusStringOfUserAnswer);  // saves users total marks into database



            Intent intent =new Intent(TestActivity.this,Result.class);
            intent.putExtra("answerString", answerString);
            intent.putExtra("statusStringOfUserAnswer", statusStringOfUserAnswer);
            intent.putExtra("AllResult", count1);
            startActivity(intent);
          finish();
          return;

        } 

这是我的logcat:

03-12 03:09:45.001: E/AndroidRuntime(2055): FATAL EXCEPTION: main
03-12 03:09:45.001: E/AndroidRuntime(2055): java.lang.ArithmeticException: divide by zero
03-12 03:09:45.001: E/AndroidRuntime(2055):     at com.example.exam.TestActivity$1.onClick(TestActivity.java:132)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.view.View.performClick(View.java:4204)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.view.View$PerformClick.run(View.java:17355)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.os.Handler.handleCallback(Handler.java:725)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.os.Looper.loop(Looper.java:137)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at java.lang.reflect.Method.invokeNative(Native Method)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at java.lang.reflect.Method.invoke(Method.java:511)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-12 03:09:45.001: E/AndroidRuntime(2055):     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:3)

第一件事是第一件事,学会阅读(和谷歌!)堆栈跟踪错误。

请注意堆栈跟踪中的内容:

java.lang.ArithmeticException: divide by zero

根据您给出的代码,您划分的唯一位置就在这里,所以问题最有可能出现在这里:

        perQuestionValue= Integer.parseInt(TotalMark) /Integer.parseInt(NoOfQuestion);

基本上,Integer.parseInt(NoOfQuestion)返回零。现在,让我们更深入。 NoOfQuestion在哪里定义?就在这里:

String NoOfQuestion =dbhelper.noOfQuestion();

这意味着您的dbhelper类非静态方法noOfQuestion()返回0.您没有在您的问题中提供dbhelper课程,所以我不能说为什么,但有一种简单的方法可以检查:

Log.v(TAG, dbhlper.noOfQuestion());

希望您熟悉这种调试:执行此操作将注销noOfQuestion返回的变量,以便您可以找出它为0的原因。

如果这个答案是helpful,请告诉我。如果您还有其他问题,请随时通过评论或编辑原始问题来询问我。

Ruchir