-1

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

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;

        } 

这是我的日志:

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)
4

1 回答 1

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。

让我知道这个答案是否对您有帮助。如果您还有其他问题,请随时通过评论或编辑您的原始问题来问我。

鲁契尔

于 2016-03-12T03:34:34.607 回答