我正在为Android编写应用程序,这与节奏有关。我尝试制作两条线,应用程序绘制节奏的原始速率,另一条线绘制你回击的内容。
它正常工作,直到我尝试为玩家的指示线上色。
for (int i = 0; i < gameosszido.size()-1; i++)
{
if (i == 0)
{
paint.setColor(Color.GREEN);
startx = 0;
starty = 0;
endx = startx;
endy = 50;
canvas.drawLine(startx, starty, endx, endy, paint);
}
else
{
line 433 if ((gameTimes.get(i-1) < hezagTimes.get(i-1)*1.25 && gameTimes.get(i-1) > hezagTimes.get(i-1)*0.85))
{
paint.setColor(Color.GREEN);
}
else if (gameTimes.get(i-1) < hezagTimes.get(i-1)*1.45 && gameTimes.get(i-1) > hezagTimes.get(i-1)*0.55)
{
paint.setColor(Color.YELLOW);
}
else
{
paint.setColor(Color.RED);
}
double d = (double)gameosszido.get(i);
double c = (double)gameosszido.get(gameosszido.size()-2);
startx = (int) (1050*(d/c));
starty = 0;
endx = startx;
endy = 50;
canvas.drawLine(startx, starty, endx, endy, paint);
}
}
它出现以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main Process: hu.qnszt.rhythmapp, PID: 2646 java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
at java.util.ArrayList.get(ArrayList.java:411)
at u.qnszt.rhythmapp.GameActivity.drawLineHit(GameActivity.java:433)
at hu.qnszt.rhythmapp.GameActivity.VerifyGame(GameActivity.java:194)
at hu.qnszt.rhythmapp.GameActivity$3.onClick(GameActivity.java:134)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
答案 0 :(得分:0)
可能问题是您的ArrayList
gameTimes
或hezagTimes
之一没有正确的尺寸,要解决此问题,您需要确定此尺寸{{1}至少ArrayList
。因为这是您将访问的最后一个位置。如果你在整个班级完成你的代码,我可以提供更多帮助,但我的猜测。