随机Int函数生成应用程序强制关闭

时间:2011-02-21 21:09:10

标签: android

我很难找到以下代码行在我的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)];

我的应用程序不再生成“强制关闭”。有没有人注意到什么?我似乎无法找到它!

4 个答案:

答案 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会引发异常,你应该了解如何自己确定这些问题的答案。