我有點新來adt和開發Java應用程序。但我正在嘗試做一個問答遊戲。不過出於某種原因,當我點擊某個按鈕時,它隨機地說,不幸的是,你的應用程序已停止。應用程序已停止錯誤Logcat錯誤
但問題是,它不會發生在同一個地方。我發生在實際測驗部分),甚至有時在主屏幕上。
我也注意到,有一些日誌貓錯誤,但因爲我是新的,我不知道如何解決它。
爲第一張圖片,這裏是日誌貓錯誤:
02-14 18:22:27.146: E/AndroidRuntime(7346): FATAL EXCEPTION: main
02-14 18:22:27.146: E/AndroidRuntime(7346): java.lang.ArrayIndexOutOfBoundsException: length=5; index=5
02-14 18:22:27.146: E/AndroidRuntime(7346): at vApp.theperiodictablequiz.QuizActivity.ansGen(QuizActivity.java:131)
02-14 18:22:27.146: E/AndroidRuntime(7346): at vApp.theperiodictablequiz.QuizActivity$4.onClick(QuizActivity.java:204)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.view.View.performClick(View.java:4206)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.view.View$PerformClick.run(View.java:17357)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.os.Handler.handleCallback(Handler.java:725)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.os.Looper.loop(Looper.java:137)
02-14 18:22:27.146: E/AndroidRuntime(7346): at android.app.ActivityThread.main(ActivityThread.java:5041)
02-14 18:22:27.146: E/AndroidRuntime(7346): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 18:22:27.146: E/AndroidRuntime(7346): at java.lang.reflect.Method.invoke(Method.java:511)
02-14 18:22:27.146: E/AndroidRuntime(7346): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-14 18:22:27.146: E/AndroidRuntime(7346): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-14 18:22:27.146: E/AndroidRuntime(7346): at dalvik.system.NativeStart.main(Native Method)
對於第二個畫面,這裏是日誌貓錯誤:
02-14 18:22:13.146: E/AndroidRuntime(7138): FATAL EXCEPTION: main
02-14 18:22:13.146: E/AndroidRuntime(7138): java.lang.RuntimeException: Unable to start activity ComponentInfo{vApp.theperiodictablequiz/vApp.theperiodictablequiz.QuizActivity}: java.lang.ArrayIndexOutOfBoundsException: length=5; index=7
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.os.Looper.loop(Looper.java:137)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread.main(ActivityThread.java:5041)
02-14 18:22:13.146: E/AndroidRuntime(7138): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 18:22:13.146: E/AndroidRuntime(7138): at java.lang.reflect.Method.invoke(Method.java:511)
02-14 18:22:13.146: E/AndroidRuntime(7138): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-14 18:22:13.146: E/AndroidRuntime(7138): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-14 18:22:13.146: E/AndroidRuntime(7138): at dalvik.system.NativeStart.main(Native Method)
02-14 18:22:13.146: E/AndroidRuntime(7138): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5; index=7
02-14 18:22:13.146: E/AndroidRuntime(7138): at vApp.theperiodictablequiz.QuizActivity.ansGen(QuizActivity.java:131)
02-14 18:22:13.146: E/AndroidRuntime(7138): at vApp.theperiodictablequiz.QuizActivity.onCreate(QuizActivity.java:56)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.Activity.performCreate(Activity.java:5104)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
02-14 18:22:13.146: E/AndroidRuntime(7138): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
02-14 18:22:13.146: E/AndroidRuntime(7138): ... 11 more
如果需要任何代碼,請告訴我和我會放棄它。謝謝你的幫助!
編輯:
下面是代碼
package vApp.theperiodictablequiz;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class QuizActivity extends Activity
{
Button Answer1;
Button Answer2;
Button Answer3;
Button Answer4;
TextView Question;
String correctAnswer="";
int qindex=0;
String[] QuestionArray =
{"HelloBye", "What element has atomic number 1?",
"What is the second most abundant element on Earth?",
"Element with symbol Li ?", "Has 4 protons?" };
String[] AnswerArray =
{ "Enter the Lion","Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon",
"Nitrogen" };
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
Answer1 = (Button) findViewById(R.id.Answer1);
Answer2 = (Button) findViewById(R.id.Answer2);
Answer3 = (Button) findViewById(R.id.Answer3);
Answer4 = (Button) findViewById(R.id.Answer4);
Question= (TextView)findViewById(R.id.textView1);
Answer1.setOnClickListener(Achecker1);
Answer2.setOnClickListener(Achecker2);
Answer3.setOnClickListener(Achecker3);
Answer4.setOnClickListener(Achecker4);
ansGen();
}
public void ansGen()
{
int AnsArraylen=AnswerArray.length;
Random randomizer=new Random();
int[] AnsVal=new int[4];
int numchecker=0;
for (int x=0;x<4;x+=1)
{
int tempVal=randomizer.nextInt((AnsArraylen));
if (tempVal==AnsVal[0])
{
numchecker=1;
}
if (tempVal==AnsVal[1])
{
numchecker=1;
}
if (tempVal==AnsVal[2])
{
numchecker=1;
}
if (tempVal==AnsVal[3])
{
numchecker=1;
}
if (numchecker==1)
{
x-=1;
}
if (numchecker==0)
{
AnsVal[x]=tempVal;
numchecker=0;
}
numchecker=0;
}
Answer1.setText(AnswerArray[AnsVal[0]]);
Answer2.setText(AnswerArray[AnsVal[1]]);
Answer3.setText(AnswerArray[AnsVal[2]]);
Answer4.setText(AnswerArray[AnsVal[3]]);
int qpick=randomizer.nextInt(4);
if(qpick==0)
{
qindex=AnsVal[0];
correctAnswer=AnswerArray[AnsVal[0]];
}
if(qpick==1)
{
qindex=AnsVal[1];
correctAnswer=AnswerArray[AnsVal[1]];
}
if(qpick==2)
{
qindex=AnsVal[2];
correctAnswer=AnswerArray[AnsVal[2]];
}
if(qpick==3)
{
qindex=AnsVal[3];
correctAnswer=AnswerArray[AnsVal[3]];
}
Question.setText(QuestionArray[qindex]);
//Quesgen(qindex);
}
View.OnClickListener Achecker1 = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("Button1");
if(Answer1.getText()==correctAnswer)
{
System.out.println("YESYESYESYESYESYESYE1");
ansGen();
}
else
{
System.out.println("Fail1");
}
}
};
View.OnClickListener Achecker2 = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("Button2");
if(Answer2.getText()==correctAnswer)
{
System.out.println("YESYESYESYESYESYESYE2");
ansGen();
}
else
{
System.out.println("Fail2");
}
}
};
View.OnClickListener Achecker3 = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("Button3");
if(Answer3.getText()==correctAnswer)
{
System.out.println("YESYESYESYESYESYESYE3");
ansGen();
}
else
{
System.out.println("Fail3");
}
}
};
View.OnClickListener Achecker4 = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("Button4");
if(Answer4.getText()==correctAnswer)
{
System.out.println("YESYESYESYESYESYESYE4");
ansGen();
}
else
{
System.out.println("Fail4");
}
}
};
public void Quesgen(int qindex)
{
Question.setText(QuestionArray[qindex]);
}
public void delay()
{
for (long x = 1; x < 90000000; x += 1)
{
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.quiz, menu);
return true;
}
}
我們能看到你的主要方法叫什麼名字? – BitNinja
顯然,您使用的元素數量少於您嘗試使用的值。請在「QuizActivity」中發佈代碼 – cosmincalistru
是的,需要的代碼。你的問題是你試圖用一個非法索引訪問你的數組元素(< 0 or > = array.length(你的例子中的第二個選項)) –