我尝试使用此方法创建随机数并将该随机数保存在数组中
int[] ndigitos = new int[313];
public int Imagenes(int cont) {
do {
nuevo = r.nextInt(313);
for (int i = 0; i < total; i++) {
if (nuevo == ndigitos[i])
aux = 1;
}
if (aux == 0) {
// agregar en la siguiente posicion el nuevo numero
ndigitos[total] = nuevo;
total++;
}
aux = 0;
} while (total < 313);
return ndigitos[cont];
}
但运行我的应用时出现此错误
java.lang.ArrayIndexOutOfBoundsException: length=313; index=313
at com.goldapp.imagenesparawhatsapp.Metodos.Imagenes(Metodos.java:97)
at com.goldapp.imagenesparawhatsapp.Main.onClick(Main.java:139)
at android.view.View.performClick(View.java:4091)
at android.view.View$PerformClick.run(View.java:17072)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5042)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
尝试将您的while条件修改为(total <312)
答案 1 :(得分:1)
数组的长度为313,从传递索引为313的错误消息开始,但最多只能访问312,因为数组以0而不是1开头。
所以从我看到的,你的错误可能来自两个地方,这一行:
ndigitos[total] = nuevo;
或这一行:
ndigitos[cont];
我无法看到你在哪里声明并设置total的初始值,你可能会在那里发现问题。 或者检查您作为参数cont传递的值,它可能是313
希望有所帮助