这是我的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)
答案 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