我很难找到以下代码行在我的Android应用程序中生成“强制关闭”的原因:
fact = myArray[randfact.nextInt(myArray.length)];
我有一些有趣的事实 - 只是一个Siring Array。它在名为array.xml的文件中定义,名称为myArray
。
生成随机事实的实际代码段是:
Random randfact = new Random();
fact = myArray[randfact.nextInt(myArray.length)];
其中fact
的类型为字符串,我将myArray
定义为Array
的{{1}}在上面两行代码之前:
Strings
我相信罪魁祸首是:
String fact;
String[] myArray;
因为当我将这条线注释掉时:
fact = myArray[randfact.nextInt(myArray.length)];
我的应用程序不再生成“强制关闭”。有没有人注意到什么?我似乎无法找到它!
答案 0 :(得分:1)
如果将0传递给Random.nextInt(n),它将抛出IllegalArgumentException - 在你的情况下,当myArray为零长度数组时会发生。
答案 1 :(得分:1)
您是如何初始化阵列的?你需要这样的东西:
myArray= getResources().getStringArray(R.array.myArray);
答案 2 :(得分:0)
查看Android日志(logcat),它会告诉你错误是什么。连接设备/仿真器后,运行ddms.bat,它将显示日志,或在IDE中显示Logcat。
答案 3 :(得分:0)
与往常一样,您需要将命令分成多行。
Log.d("TEST","Array length: "+myArray.length)
int nexti = randfact.nextInt(myArray.length)
Log.d("TEST","Random fact index: "+nexti)
fact = myArray[nexti];
虽然答案很清楚,将0传递给random.nextInt会引发异常,你应该了解如何自己确定这些问题的答案。